Pewarisan Dasar
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 48 dari 104.
Pewarisan memungkinkan sebuah class memperoleh property dan perilaku dari class lain. Class yang diwarisi disebut class dasar (atau induk), dan class yang mewarisi disebut class turunan (atau anak).
Untuk membuat class turunan, gunakan titik dua yang diikuti penentu akses dan nama class dasar:
class Animal {
public:
std::string name;
void eat() {
std::cout << name << " is eating" << std::endl;
}
};
class Dog : public Animal {
public:
void bark() {
std::cout << name << " says woof!" << std::endl;
}
};Class Dog kini memiliki akses ke name dan eat() dari Animal, serta method bark() miliknya sendiri. Inilah inti pewarisan: menggunakan kembali kode yang sudah ada sambil menambahkan fungsionalitas baru.
Dog myDog;
myDog.name = "Buddy";
myDog.eat(); // Diwarisi dari Animal
myDog.bark(); // Didefinisikan di DogKata kunci public sebelum Animal menentukan tipe pewarisan. Pewarisan public berarti anggota public dari class dasar tetap public di class turunan. Ini adalah bentuk yang paling umum dan menggambarkan hubungan "adalah": Dog adalah Animal.
Tantangan
MudahMari buat hierarki kendaraan sederhana yang menunjukkan cara kerja inheritance. Kamu akan membuat class dasar Vehicle dan class turunan Motorcycle yang memperluasnya dengan perilaku khusus.
Kamu akan mengatur kodemu dalam tiga file:
Vehicle.h: Definisikan class dasarVehicledengan:- Anggota publik
std::string brand - Anggota publik
int year - Method publik
displayInfo()yang mencetak merek dan tahun kendaraan dalam format:Brand: <brand>, Year: <year>
- Anggota publik
Motorcycle.h: Definisikan classMotorcycleyang mewarisiVehiclesecara publik. Class turunan ini harus menambahkan:- Anggota publik
int engineCCuntuk kapasitas mesin - Method publik
revEngine()yang mencetak:<brand> goes vroom vroom!
Class
Motorcycleakan otomatis mewarisibrand,year, dandisplayInfo()dariVehicle.- Anggota publik
main.cpp: Baca tiga input, masing-masing pada baris terpisah:- Nama merek (string)
- Tahun (bilangan bulat)
- Kapasitas mesin dalam CC (bilangan bulat)
Buat object
Motorcycle, lalu atur anggota yang diwarisinya (branddanyear) serta anggotaengineCCmiliknya sendiri. Kemudian hasilkan tiga baris output secara berurutan: pertama, panggil method warisandisplayInfo(), berikutnya cetak sendiri kapasitas mesin denganstd::cout << "Engine: " << moto.engineCC << "cc" << std::endl;, lalu panggil method khusus sepeda motorrevEngine(). Ini menunjukkan inheritance dengan menggunakan method warisan dan method milik class turunan.Format output:
Brand: <brand>, Year: <year> Engine: <engineCC>cc <brand> goes vroom vroom!
Contohnya, dengan input Harley, 2022, dan 1200:
Brand: Harley, Year: 2022
Engine: 1200cc
Harley goes vroom vroom!Jangan lupa menyertakan header guards di file header-mu dan menggunakan #include "Vehicle.h" di header Motorcycle-mu untuk mengakses class dasar.
Coba sendiri
#include <iostream>
#include <string>
#include "Motorcycle.h"
using namespace std;
int main() {
string brand;
int year;
int engineCC;
cin >> brand;
cin >> year;
cin >> engineCC;
// TODO: Buat object Motorcycle
// TODO: Atur anggota brand, year, dan engineCC miliknya
// TODO: Panggil displayInfo() untuk menampilkan informasi yang diwarisi
// TODO: Cetak informasi mesin dengan format: Engine: <engineCC>cc
// TODO: Panggil revEngine() untuk menunjukkan perilaku khusus sepeda motor
return 0;
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Object
1Dasar-Dasar OOP
File EksternalBuild dan Kompilasi C++File Header dan File SourceNamespace dan CakupanPengantar OOP dalam C++class vs objectPointer 'this'method (Fungsi Anggota)Atribut (Anggota Data)Dasar Ctor dan DtorRingkasan: Kalkulator Sederhana4Properti class
Anggota instance vs staticGetter dan setterFungsi anggota constKata kunci mutableMethod dan variabel staticFungsi dan class friendRangkuman, Pengelola Rekening Bank7Pewarisan
Pewarisan DasarTingkat Akses pada PewarisanUrutan Pemanggilan Ctor & DtorPenimpaan methodFungsi Virtual & VTablePewarisan BergandaPewarisan VirtualRangkuman: Hierarki Karyawan2Manajemen Memori
Memori Stack vs HeapPointer dan ReferenceMemori Dinamis (new/delete)Smart Pointer di C++RAII di C++Rangkuman: Pengelola Array Dinamis5Enkapsulasi
Penentu Akses dalam C++Penentu Akses secara MendalamPenyembunyian Informasistruct vs classNested dan Inner classRangkuman, Sistem Catatan Siswa8Polimorfisme
Polimorfisme saat Compile vs RuntimeOverloading FungsiMeninjau Kembali Fungsi VirtualFungsi Virtual MurniKelas AbstrakDesain Interface di C++Casting Dinamis & RTTIRangkuman: Kalkulator Bentuk3Konstruktor & Destruktor
Konstruktor DefaultKonstruktor BerparameterKonstruktor SalinKonstruktor PindahDaftar Inisialisasi KonstruktorKonstruktor DelegasiKupas Tuntas DestruktorAturan Tiga, Lima, dan NolRangkuman: class String6Overloading Operator
Pengantar Overloading OperatorOverloading Operator AritmetikaOverloading Operator PerbandinganOperator StreamOverloading Operator PenugasanOverloading Operator [] dan ()Operator Konversi TipeRingkasan, class Matrix9Template
Template FungsiTemplate classSpesialisasi TemplateTemplate VariadikDasar SFINAE & Type TraitsRangkuman, Container GenerikLatihan sendiri: Compiler C++ online