C ++ Multiple, Multilevel and Hierarchical Inheritance

Pada artikel ini, Anda akan belajar tentang berbagai model pewarisan dalam pemrograman C ++: Pewarisan Berganda, Bertingkat, dan Hierarki dengan contoh.

Pewarisan adalah salah satu fitur inti dari bahasa pemrograman berorientasi objek. Ini memungkinkan pengembang perangkat lunak untuk mendapatkan kelas baru dari kelas yang ada. Kelas turunan mewarisi fitur dari kelas dasar (kelas yang sudah ada).

Ada berbagai model pewarisan dalam pemrograman C ++.

C ++ Pewarisan Bertingkat

Dalam pemrograman C ++, Anda tidak hanya dapat memperoleh kelas dari kelas dasar, tetapi Anda juga dapat memperoleh kelas dari kelas turunan. Bentuk warisan ini dikenal sebagai warisan bertingkat.

kelas A (… ); kelas B: publik A (…); kelas C: publik B (………);

Di sini, kelas B diturunkan dari kelas dasar A dan kelas C diturunkan dari kelas B yang diturunkan.

Contoh 1: C ++ Multilevel Inheritance

 #include using namespace std; class A ( public: void display() ( cout<<"Base class content."; ) ); class B : public A ( ); class C : public B ( ); int main() ( C obj; obj.display(); return 0; )

Keluaran

 Konten kelas dasar.

Dalam program ini, kelas C diturunkan dari kelas B (yang diturunkan dari kelas dasar A).

Objek objek kelas C didefinisikan dalam main()fungsi.

Ketika display()fungsi dipanggil, display()di kelas A dijalankan. Itu karena tidak ada display()fungsi di kelas C dan kelas B.

Kompilator pertama-tama mencari display()fungsi di kelas C. Karena fungsi tersebut tidak ada di sana, ia mencari fungsi di kelas B (karena C diturunkan dari B).

Fungsi tersebut juga tidak ada di kelas B, jadi kompilator mencarinya di kelas A (karena B diturunkan dari A).

Jika display()fungsi ada di C, kompilator mengganti display()kelas A (karena penggantian fungsi anggota).

C ++ Multiple Inheritance

Dalam pemrograman C ++, kelas dapat diturunkan dari lebih dari satu orang tua. Sebagai contoh: Kelas Kelelawar diturunkan dari kelas dasar Mamalia dan Hewan Bersayap. Masuk akal karena kelelawar adalah mamalia sekaligus hewan bersayap.

Contoh 2: Beberapa Warisan dalam Pemrograman C ++

 #include using namespace std; class Mammal ( public: Mammal() ( cout << "Mammals can give direct birth." << endl; ) ); class WingedAnimal ( public: WingedAnimal() ( cout << "Winged animal can flap." << endl; ) ); class Bat: public Mammal, public WingedAnimal ( ); int main() ( Bat b1; return 0; ) 

Keluaran

Mamalia bisa melahirkan langsung. Hewan bersayap bisa mengepak.

Ambiguitas dalam Warisan Ganda

Masalah paling jelas dengan beberapa pewarisan terjadi selama penggantian fungsi.

Misalkan, dua kelas dasar memiliki fungsi yang sama yang tidak diganti di kelas turunan.

Jika Anda mencoba memanggil fungsi menggunakan objek dari kelas turunan, kompilator menunjukkan kesalahan. Itu karena compiler tidak tahu fungsi mana yang harus dipanggil. Sebagai contoh,

 class base1 ( public: void someFunction( ) (… .… … . ) ); class base2 ( void someFunction( ) (… .… … . ) ); class derived : public base1, public base2 ( ); int main() ( derived obj; obj.someFunction() // Error! )  

Masalah ini dapat diselesaikan dengan menggunakan fungsi resolusi lingkup untuk menentukan fungsi mana yang akan dikelompokkan baik base1 atau base2

 int main () (obj.base1 :: someFunction (); // Fungsi kelas base1 disebut obj.base2 :: someFunction (); // Fungsi kelas base2 dipanggil.)

C ++ Hierarchical Inheritance

Jika lebih dari satu kelas diwarisi dari kelas dasar, itu dikenal sebagai pewarisan hierarki. Dalam pewarisan hierarkis, semua fitur yang umum di kelas anak disertakan dalam kelas dasar.

Contoh: Fisika, Kimia, Biologi diturunkan dari kelas IPA.

Sintaks dari Hierarchical Inheritance

 kelas base_class (…) kelas first_derived_class: public base_class (…) kelas second_derived_class: public base_class (…) kelas third_derived_class: public base_class (…)

Artikel yang menarik...