Dalam tutorial ini, kita akan belajar tentang pewarisan di C ++ dengan bantuan contoh.
Pewarisan adalah salah satu fitur utama dari pemrograman berorientasi objek di C ++. Ini memungkinkan kita untuk membuat kelas baru (kelas turunan) dari kelas yang ada (kelas dasar).
Kelas turunan mewarisi fitur dari kelas dasar dan dapat memiliki fitur tambahannya sendiri. Sebagai contoh,
class Animal ( // eat() function // sleep() function ); class Dog : public Animal ( // bark() function );
Di sini, Dog
kelas diturunkan dari Animal
kelas. Sejak Dog
berasal dari Animal
, anggota Animal
dapat diakses oleh Dog
.

Perhatikan penggunaan kata kunci public
saat mewarisi Anjing dari Hewan.
class Dog : public Animal (… );
Kami juga dapat menggunakan kata kunci private
dan protected
sebagai gantinya public
. Kami akan belajar tentang perbedaan antara menggunakan private
, public
dan protected
nanti di tutorial ini.
adalah-hubungan
Warisan adalah suatu hubungan . Kami menggunakan warisan hanya jika ada hubungan is -a antara dua kelas.
Berikut beberapa contohnya:
- Mobil adalah kendaraan.
- Jeruk adalah buah.
- Seorang ahli bedah adalah seorang dokter.
- Seekor anjing adalah binatang.
Contoh 1: Contoh Sederhana Warisan C ++
// C++ program to demonstrate inheritance #include using namespace std; // base class class Animal ( public: void eat() ( cout << "I can eat!" << endl; ) void sleep() ( cout << "I can sleep!" << endl; ) ); // derived class class Dog : public Animal ( public: void bark() ( cout << "I can bark! Woof woof!!" << endl; ) ); int main() ( // Create object of the Dog class Dog dog1; // Calling members of the base class dog1.eat(); dog1.sleep(); // Calling member of the derived class dog1.bark(); return 0; )
Keluaran
Saya bisa makan! Saya bisa tidur! Saya bisa menggonggong! Guk guk!!
Di sini, dog1 (objek kelas turunan Dog
) dapat mengakses anggota kelas dasar Animal
. Itu karena Dog
diwarisi dari Animal
.
// Calling members of the Animal class dog1.eat(); dog1.sleep();
Anggota yang dilindungi C ++
Pengubah akses protected
sangat relevan dalam hal pewarisan C ++.
Seperti private
anggota, protected
anggota tidak dapat diakses di luar kelas. Namun, mereka dapat diakses oleh kelas turunan dan kelas / fungsi teman .
Kita membutuhkan protected
anggota jika kita ingin menyembunyikan data suatu kelas, tetapi tetap ingin data tersebut diwarisi oleh kelas turunannya.
Untuk mempelajari lebih lanjut tentang dilindungi, lihat tutorial Pengubah Akses C ++ kami.
Contoh 2: Anggota yang dilindungi C ++
// C++ program to demonstrate protected members #include #include using namespace std; // base class class Animal ( private: string color; protected: string type; public: void eat() ( cout << "I can eat!" << endl; ) void sleep() ( cout << "I can sleep!" << endl; ) void setColor(string clr) ( color = clr; ) string getColor() ( return color; ) ); // derived class class Dog : public Animal ( public: void setType(string tp) ( type = tp; ) void displayInfo(string c) ( cout << "I am a " << type << endl; cout << "My color is " << c << endl; ) void bark() ( cout << "I can bark! Woof woof!!" << endl; ) ); int main() ( // Create object of the Dog class Dog dog1; // Calling members of the base class dog1.eat(); dog1.sleep(); dog1.setColor("black"); // Calling member of the derived class dog1.bark(); dog1.setType("mammal"); // Using getColor() of dog1 as argument // getColor() returns string data dog1.displayInfo(dog1.getColor()); return 0; )
Keluaran
Saya bisa makan! Saya bisa tidur! Saya bisa menggonggong! Guk guk!! Saya mamalia. Warna saya hitam
Di sini, tipe variabel adalah protected
dan dengan demikian dapat diakses dari kelas turunan Dog
. Kita dapat melihat ini seperti yang telah kita inisialisasi type
di Dog
kelas menggunakan fungsi tersebut setType()
.
Di sisi lain, private
warna variabel tidak dapat diinisialisasi Dog
.
class Dog : public Animal ( public: void setColor(string clr) ( // Error: member "Animal::color" is inaccessible color = clr; ) );
Selain itu, karena protected
kata kunci menyembunyikan data, kita tidak dapat mengakses tipe secara langsung dari objek Dog
atau Animal
kelas.
// Error: member "Animal::type" is inaccessible dog1.type = "mammal";
Mode Akses di C ++ Inheritance
Dalam tutorial kami sebelumnya, kami telah belajar tentang penentu akses C ++ seperti publik, pribadi, dan dilindungi.
Sejauh ini, kami telah menggunakan public
kata kunci untuk mewarisi kelas dari kelas dasar yang sudah ada sebelumnya. Namun, kita juga dapat menggunakan kata kunci private
dan protected
untuk mewarisi kelas. Sebagai contoh,
class Animal ( // code ); class Dog : private Animal ( // code );
class Cat : protected Animal ( // code );
Berbagai cara kita dapat memperoleh kelas dikenal sebagai mode akses . Mode akses ini memiliki efek berikut:
- publik: Jika kelas turunan dideklarasikan dalam
public
mode, maka anggota kelas dasar diwarisi oleh kelas turunan sebagaimana adanya. - private: Dalam hal ini, semua anggota kelas dasar menjadi
private
anggota dalam kelas turunan. - dilindungi: The
public
anggota menjadi kelas dasarprotected
anggota di kelas turunan.
Para private
anggota kelas dasar selalu private
di kelas turunan.
Untuk mempelajari lebih lanjut, kunjungi tutorial warisan C ++ publik, pribadi, dan dilindungi.
Fungsi Anggota Menggantikan dalam Warisan
Misalkan, kelas dasar dan kelas turunan memiliki fungsi anggota dengan nama dan argumen yang sama.
Jika kita membuat objek dari kelas turunan dan mencoba mengakses fungsi anggota itu, fungsi anggota di kelas turunan akan dipanggil alih-alih yang ada di kelas dasar.
Fungsi anggota kelas turunan menggantikan fungsi anggota kelas dasar.
Pelajari lebih lanjut tentang Penggantian fungsi di C ++.
Bacaan yang Direkomendasikan: C ++ Multiple Inheritance