Inheritance Pada Classes C++

posted in: Pemrograman C++ | 3

Mekanisme Inheritance Pada Clasess

Dalam kelas pada pemrograman C++, terdapat mekanisme keturunan (inheritance), dimana dalam mekanisme ini terdapat istilah kelas induk dan kelas anak. Kelas anak akan menginduk pada kelas induk. Keistimewaan dari metode inheritance adalah, kelas anak memiliki sifat-sifat atau fungsi dari kelas induk, namun dengan “batasan” tertentu. Dengan mekanisme keturunan ini, member kelas anak akan bertambah yaitu member kelas anak sendiri ditambah dengan member kelas induk.

Sebagai contoh, kelas anak memiliki member a dan b, sedangkan kelas induk memiliki member c. Apabila kelas anak adalah keturunan dari kelas induk, maka member kelas anak adalah a, b, dan c. Namun di sini kelas induk tidak berhak akan member anak yaitu a dan b.

Kamu dapat menyatakan bahwa suatu kelas adalah keturunan dari kelas lainya menggunakan sintaks berikut ini:

class nama_kelas_anak:penentu_akses nama_kelas_induk
{
//kode
}

Pada contoh sintaks di atas, nama_kelas_anak adalah kelas turunan dari kelas induk. Kemudian nama_kelas_induk adalah nama kelas induk dari si-anak. Nah, disini yang paling penting yaitu penentu _akses, dimana penentu akses adalah hak akses maksimal dari member kelas induk yang diwariskan kepada kelas anak. Berikut adalah macam-macam penentu_akses yang mempengaruhi pewarisan/ inheritance:

  • Public : maka member kelas induk yang berupa public akan tetap public dan yang protected tetap protected pada kelas anak.
  • Protected : maka member kelas induk yang berupa public akan berubah menjadi protected, dan protected tetap sebagai protected.
  • Private : maka member yang diturunkan dari kelas induk pada kelas anak semua berubah menjadi private, entah itu public atau protected.

Agar kamu memiliki gambaran tentang penentu akses, simak contoh-contoh berikut. Jika kamu memiliki kelas induk sebagai berikut:

class induk
{
    private:
      int member_Private1, member_Private2;
    protected:
      int member_Protected1, member_Protected2;
    public:
      int member_Public1, member_Public2;
};

Dan kelas anak kamu deklarasikan sebagai berikut:

class anak: public induk
{
    public:
      int member_Public_Anak;
};

Maka, dalam kelas anak, member_Protected1, dan member_Protected2, akan tetap protected dan member_Public1 dan member_Public2 akan tetap public. Sementara kelas anak tetap tidak bisa mendapatkan member_Private1 dan member_Private2. 

Jika kamu mendeklarasikan kelas anak seperti berikut:

class anak: protected induk
{
    public:
      int member_Public_Anak;
};

Maka dalam kelas anak, member_Protected1 dan member_protected2, akan tetap protected sedangkan member_Public1 dan member_Public2 akan berubah menjadi protected.

Jika kamu mendeklarasikan kelas anak seperti berikut:

class anak: private induk
{
    public:
      int member_Public_Anak;
};

Maka dalam kelas anak, member_Protected1, member_Protected2, member_Public1, dan member_Public2 akan berubah semuanya menjadi private jika kamu mengakses melalui kelas anak.

Implementasi inheritance pada classes, Mimin contohkan sebagai berikut:


#include <iostream>
using namespace std;

class induk{
protected:
int sisi_a,sisi_b;
public:
void input(float panjang, float lebar);
};

void induk::input(float panjang, float lebar){
sisi_a = panjang;
sisi_b = lebar;
}

class anak:public induk{
public:
float luas(){return sisi_a*sisi_b;};
};

int main(){
anak o;
o.input(7,8);
cout<<"Nilai dari o.luas() adalah = "<<o.luas()<<endl;
return 0;
}

Pada program di atas Mimin membuat dua buah kelas yaitu kelas induk dan kelas anak. Kelas induk bertugas dalam menerima input nilai dari user, sedangkan kelas anak berfungsi dalam proses kalkulasi nilai yang didapatkan dari input user tadi.

Kelas induk memiliki member protected berupa sisi_a dan sisi_b serta member public berupa fungsi input. Fungsi input bertugas menerima input nilai melalui parameter panjang serta lebar yang dimilikinya dan selanjutnya diumpan pada member protected sisi_a serta sisi_b.

Kelas anak dideklarasikan terhadap kelas induk dengan penentu akses berupa public. Kelas anak ini memiliki member public berupa fungsi luas. Seperti penjelasan di atas, ketika kelas anak dideklarasikan dengan penentu akses public, maka member induk protected akan tetap protected dan public akan tetap public. Pada baris 18, bisa kamu lihat bahwa, kelas anak mengakses member induk yaitu sisi_a dan sisi_b, dimana member ini bersifat protected.

Pada operasinya di fungsi utama/ main(), kelas anak membuat objek ‘o’. Kemdian objek ini digunakan dalam mengakses member fungsi input milik kelas induk serta diberikan masukkan nilai 7 dan 8. Sebagai hasil operasi, objek ‘o’ kemudian mengakses member fungsi luas miliknya sendiri dan mencetak hasil kalkulasi pada baris 24.

Berikut output program yang Mimin dapatkan:

inheritance-classes-cpp

Multiple Inheritance Pada Clasess

Sebenarnya konsep ini sama dengan yang sudah Mimin jelaskan di atas. Inti dari multiple inheritance adalah bahwa kelas anak dapat menginduk ke beberapa kelas induk. Sebagai gambaran, kelas anak menginduk pada kelas ibu dan kelas bapak. Nah sintaks deklarasi pada kelas anak dapat kamu lakukan sebagai berikut:

class nama_kelas_anak:penentu_akses nama_kelas_induk1, penentu_akses nama_kelas_induk2
{
//kode
}

Mekanisme multiple inheritance sama persis seperti konsep inheritance pada imumnya.

 

“Daripada menghias diri dengan intan berlian, lebih baik membekali diri dengan ilmu pengetahuan”

Salam sinauarduino.com

3 Responses

  1. dalam inheritance, manakah variabel yang paling berpengaruh ? apakah variabel dari induk atau anak. matur suwun, admin.

  2. nike air force 1 07 lv8 noirblancmarron nike air force 1

    online 2018 mens nike air max 2017 kpu black silver online cheapnike mercurial vortex iii fg men麓s nike football shoes greenadidas kids alphabounce rc grade school running shoes blackwhitenike zoom victory 2 middle distance running spikes size 14 m us

  3. mens leather shoes white black silver outlet

    nike field boots on feetair max 90 red white nikeid women colorfulwomen nike free 4 0 flynit red blacknike obsidian white sportswear cortez trainers

Leave a Reply