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:
public
Inheritance- Semua anggota
public
di kelas induk tetappublic
di kelas turunan. - Anggota
protected
tetapprotected
di kelas turunan.
- Semua anggota
protected
Inheritance- Anggota
public
danprotected
di kelas induk menjadiprotected
di kelas turunan.
- Anggota
private
Inheritance- Semua anggota
public
danprotected
di kelas induk menjadiprivate
di kelas turunan.
- Semua anggota
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:
- Single Inheritance (pewarisan tunggal)
Satu kelas turunan memiliki satu kelas induk. - Multiple Inheritance (pewarisan ganda)
Satu kelas turunan memiliki lebih dari satu kelas induk. - Multilevel Inheritance (pewarisan bertingkat)
Pewarisan terjadi secara berantai. - 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
- Reusability: Kode di kelas induk dapat digunakan kembali oleh kelas turunan.
- Kemudahan pengelolaan: Mempermudah pengelolaan hierarki kelas.
- 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