Inheritance di C++ Pewarisan Kelas dengan Mudah

Inheritance di C++: Pewarisan Kelas dengan Mudah

Inheritance (pewarisan) adalah salah satu pilar utama dalam Pemrograman Berorientasi Objek (OOP). Inheritance memungkinkan sebuah kelas (kelas turunan) untuk mewarisi atribut dan metode dari kelas lain (kelas induk). Hal ini mendukung prinsip reusability (penggunaan kembali) dan mempermudah pengembangan program dengan hierarki kelas.

Jenis Akses dalam Pewarisan

C++ mendukung tiga jenis pewarisan berdasarkan aksesibilitas:

  1. public Inheritance
    • Semua anggota public di kelas induk tetap public di kelas turunan.
    • Anggota protected tetap protected di kelas turunan.
  2. protected Inheritance
    • Anggota public dan protected di kelas induk menjadi protected di kelas turunan.
  3. private Inheritance
    • Semua anggota public dan protected di kelas induk menjadi private di kelas turunan.

Sintaks Pewarisan

class KelasInduk {
    // Anggota kelas induk
};

class KelasTurunan : akses KelasInduk {
    // Anggota kelas turunan
};

Contoh Pewarisan: Public Inheritance

Kode:

#include <iostream>
using namespace std;

// Kelas induk
class Hewan {
public:
    string nama;

    void makan() {
        cout << nama << " sedang makan." << endl;
    }
};

// Kelas turunan
class Anjing : public Hewan {
public:
    void menggonggong() {
        cout << nama << " menggonggong." << endl;
    }
};

int main() {
    Anjing anjing1;
    anjing1.nama = "Buddy";  // Akses atribut dari kelas induk
    anjing1.makan();         // Memanggil metode dari kelas induk
    anjing1.menggonggong();  // Memanggil metode kelas turunan

    return 0;
}

Output:

Buddy sedang makan.
Buddy menggonggong.

Pewarisan protected dan private

Contoh Protected Inheritance:

class Hewan {
protected:
    string nama;
public:
    void setNama(string n) {
        nama = n;
    }
};

class Kucing : protected Hewan {
public:
    void tampilkanNama() {
        cout << "Nama Kucing: " << nama << endl;
    }
};

int main() {
    Kucing kucing;
    kucing.setNama("Kitty");
    kucing.tampilkanNama();
    return 0;
}

Output:

Nama Kucing: Kitty

Catatan:

Pada pewarisan protected, atribut yang diwarisi hanya bisa diakses oleh kelas turunan, tidak dari luar.

Hierarki Kelas

C++ mendukung beberapa bentuk hierarki pewarisan:

  1. Single Inheritance (pewarisan tunggal)
    Satu kelas turunan memiliki satu kelas induk.
  2. Multiple Inheritance (pewarisan ganda)
    Satu kelas turunan memiliki lebih dari satu kelas induk.
  3. Multilevel Inheritance (pewarisan bertingkat)
    Pewarisan terjadi secara berantai.
  4. Hierarchical Inheritance
    Beberapa kelas turunan memiliki satu kelas induk yang sama.

Contoh Pewarisan Ganda

#include <iostream>
using namespace std;

class Mamalia {
public:
    void bernapas() {
        cout << "Mamalia bernapas." << endl;
    }
};

class Karnivora {
public:
    void makanDaging() {
        cout << "Karnivora makan daging." << endl;
    }
};

class Singa : public Mamalia, public Karnivora {
};

int main() {
    Singa singa1;
    singa1.bernapas();    // Memanggil metode dari Mamalia
    singa1.makanDaging(); // Memanggil metode dari Karnivora

    return 0;
}

Output:

Mamalia bernapas.
Karnivora makan daging.

Overriding dan Polimorfisme

Dalam inheritance, metode di kelas turunan dapat mengoverride metode dari kelas induk dengan mendefinisikan ulang metode tersebut.

Contoh Overriding:

#include <iostream>
using namespace std;

class Hewan {
public:
    virtual void suara() {
        cout << "Hewan mengeluarkan suara." << endl;
    }
};

class Anjing : public Hewan {
public:
    void suara() override {
        cout << "Anjing menggonggong." << endl;
    }
};

int main() {
    Hewan* hewan = new Anjing();
    hewan->suara();  // Memanggil versi Anjing

    delete hewan;
    return 0;
}

Output:

Anjing menggonggong.

Keuntungan Inheritance

  1. Reusability: Kode di kelas induk dapat digunakan kembali oleh kelas turunan.
  2. Kemudahan pengelolaan: Mempermudah pengelolaan hierarki kelas.
  3. Polimorfisme: Mendukung perilaku dinamis melalui fungsi virtual.

Jika Anda ingin contoh lebih kompleks seperti studi kasus atau implementasi hierarki kelas yang besar, beri tahu saya! 😊

Leave a Reply

Your email address will not be published. Required fields are marked *