Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C++ Multiple, Multilevel dan Hierarchical Inheritance

C++ Multiple, Multilevel dan Hierarchical Inheritance

Dalam tutorial ini, kita akan belajar tentang berbagai model pewarisan dalam pemrograman C++:Pewarisan Berganda, Bertingkat, dan Hierarki beserta contohnya.

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

Ada berbagai model pewarisan dalam pemrograman C++.


Warisan Multilevel C++

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

class A { 
... .. ... 
};
class B: public A {
... .. ...
};
class C: public B {
... ... ...
};

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


Contoh 1:Warisan Multilevel C++

#include <iostream>
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

Base class content.

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

obj objek kelas C didefinisikan dalam main() fungsi.

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

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

Fungsinya juga tidak ada di kelas B , jadi kompiler mencarinya di kelas A (sebagai B diturunkan dari A ).

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


C++ Multiple Inheritance

Dalam pemrograman C++, sebuah kelas dapat diturunkan dari lebih dari satu induk. Misalnya, kelas A Bat 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 <iostream>
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

Mammals can give direct birth.
Winged animal can flap.

Ambiguitas dalam Banyak Warisan

Masalah yang paling jelas dengan pewarisan berganda terjadi selama penggantian fungsi.

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

Jika Anda mencoba memanggil fungsi menggunakan objek dari kelas turunan, kompiler menunjukkan kesalahan. Itu karena kompiler tidak tahu fungsi mana yang harus dipanggil. Misalnya,

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 dikelaskan baik base1 atau base2

int main() {
    obj.base1::someFunction( );  // Function of base1 class is called
    obj.base2::someFunction();   // Function of base2 class is called.
}

Pewarisan Hirarki C++

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

Misalnya, Fisika, Kimia, Biologi diturunkan dari kelas IPA. Demikian pula, Anjing, Kucing, Kuda diturunkan dari kelas Hewan.


Sintaks Warisan Hirarki

class base_class {
     ... .. ...
}

class first_derived_class: public base_class {
     ... .. ...
}

class second_derived_class: public base_class {
     ... .. ...
}

class third_derived_class: public base_class {
     ... .. ...
}

Contoh 3:Warisan Hirarkis dalam Pemrograman C++

// C++ program to demonstrate hierarchical inheritance

#include <iostream>
using namespace std;

// base class
class Animal {
   public:
    void info() {
        cout << "I am an animal." << endl;
    }
};

// derived class 1
class Dog : public Animal {
   public:
    void bark() {
        cout << "I am a Dog. Woof woof." << endl;
    }
};

// derived class 2
class Cat : public Animal {
   public:
    void meow() {
        cout << "I am a Cat. Meow." << endl;
    }
};

int main() {
    // Create object of Dog class
    Dog dog1;
    cout << "Dog Class:" << endl;
    dog1.info();  // Parent Class function
    dog1.bark();

    // Create object of Cat class
    Cat cat1;
    cout << "\nCat Class:" << endl;
    cat1.info();  // Parent Class function
    cat1.meow();

    return 0;
}

Keluaran

Dog Class:
I am an animal.
I am a Dog. Woof woof.

Cat Class:
I am an animal.
I am a Cat. Meow.

Di sini, keduanya Dog dan Cat kelas diturunkan dari Animal kelas. Dengan demikian, kedua kelas turunan dapat mengakses info() fungsi milik Animal kelas.


Bahasa C

  1. C# Kelas dan Objek
  2. C# kelas abstrak dan metode
  3. C# Kelas Parsial dan Metode Parsial
  4. C# kelas dan metode tersegel
  5. Kelas dan Objek C++
  6. C++ Warisan Publik, Dilindungi, dan Pribadi
  7. Fungsi teman C++ dan Kelas teman
  8. Perbedaan antara Struktur dan Kelas:Dijelaskan dengan Contoh C++
  9. Kelas Penyimpanan di C++
  10. C++ Tanggal dan Waktu