Penjelasan dan Tipe-tipe Pewarisan (Inheritance)

Written by: Fajar   |   Updated on: Mei 20, 2019
inheritance

Pengertian Inheritance / Pewarisan

Inheritance atau Pewarisan adalah salah satu konsep pada object oriented programming, yang mengadopsi konsep pewarisan yang di miliki oleh object pada dunia nyata. Konsep Pewarisan ini memiliki model relasi “adalah”, dimana sebuah class akan dimungkinkan untuk mengambil isi dari class lain sebagai isi dari class tersebut.

Konsep pewarisan akan mempermudah kita dalam membuat dan perawatan sebuah program, dengan menghilangkan “penggunaan kode berulang” saat pembuatan banyak class yang serupa.

Contoh kasus yang tepat untuk penggunaan konsep pewarisan adalah ketika kita sedang membuat class macam-macam orang, dimana pertama-tama anda akan membuat sebuah class orang sebagai base class yang memiliki attribute dan method layaknya sebagai manusia pada dunia nyata, lalu base class tersebut isinya dapat di warisi ke derived classes, dimana derived merupakan macam-macam golongan dari aktivitas manusia, misalnya class pekerja, class pelajar, class pengusaha dan lain sebagainya.

mewariskan
Visual dari pewarisan

Dalam kasus tersebut, class dari macam-macam orang (pelajar, pengusaha, pekerja) harus mewarisi isi dari class orang, karena beberapa class tersebut memang membutuhkan identitas (attribute) dan sifat (method) dasar menjadikanya layaknya orang, dan hal itu dimiliki oleh class orang. Dengan hal ini kita tidak perlu mengetikan kode berulang kali yang mirip seperti isi dari class orang ke beberapa class yang membutuhkan isi tersebut.

Cara mendirikan inheritace / Pewarisan

Untuk mendirikan sebuah base class, sama seperti layaknya kita membuat class biasa.

Untuk mendirikan derived class dan mewarisi informasi dari base class, mendirikan class sama seperti kita mendirikan class seperti biasanya dan akan dibutuhkan tambahan berupa daftar class penurunan (base class) yang ditulis setelah tanda :.

Bentuk penulisan

class nama_class : access_specifier base_class{
//…
};

Penjelasan

  • class nama_class : adalah tempat dimana anda membuat sebuah class dengan nama yang anda butuhkan yang diikuti sebuah keyword class.

  • Tanda : : adalah tanda untuk memisahkan derived class dan class turunan-nya.

  • access_specifier base_class : adalah tempat dimana kita mendaftarkan base class yang ingin kita turunkan informasinya, dengan di ikuti access specifier yang akan menentukan sifat dari base class tersebut dalam derivered class itu.

Baca :   Penjelasan Virtual Function untuk Polymorphism

Contoh Penulisan

class pekerja : public orang{ 
//…
};

Contoh Program

#include <iostream>
#include <string>
using namespace std;

class orang{
    public:
    string nama;

    orang(string pNama):
        nama(pNama){
        cout<<"orang dibuat\n"<<endl;
    }
    ~orang(){
        cout<<"orang dihapus\n"<<endl;
    }
};

class pelajar: public orang{
    public:
    string sekolah;

    pelajar(string pNama, string pSekolah):
        orang(pNama),
        sekolah(pSekolah){
        cout<<"pelajar dibuat\n"<<endl;
    }
    ~pelajar(){
        cout<<"orang dibuat\n"<<endl;
    }
    string perkenalan(){
        return "Hallo, nama saya " + nama + " dari sekolah " + sekolah + "\n\n";
    }
};

int main(){
    pelajar andi("andi laksono", "belajarcpp");
    cout<<andi.perkenalan();

    return 0;
}

Tipe-tipe Inheritance / Pewarisan

Pemberian access specifier pada daftar base class dalam mendirikan derived class dapat berupa public, protected atau private, masing-masing akan memberikan efek berbeda pada derived class tersebut. Dan efek tersebut adalah :

  • Public Inheritance : Jika mendaftarkan base class pada derived class menggunakan access specifier public maka akan membuat member dari base class yang memiliki sifat private, protected, dan public akan menjadi diri mereka sendiri pada derived class tersebut.

  • Protected Inheritance : jika mendaftarkan base class pada derived class menggunakan access specifier protected maka akan membuat member dari base class yang bersifat protected dan public menjadi bersifat protected pada derived class.

  • Private Inheritance : jika mendaftarkan base class pada derived class menggunakan access specifier private maka akan membuat member dari base class yang bersifat protected dan public menjadi bersifat private pada derived class.

Multiple inheritance / Pewarisan

Dalam bahasa pemrograman C++ dimungkinkan untuk mendaftarkan banyak base class pada satu derived class. Cara penulisanya sama seperti kita mendaftarkan satu base class pada satu derived class, hanya daftar dari base class akan ditulis secara sejejar dan dipisahkan dengan tanda koma , .

Contoh Penulisan

class pegawai: public orang, private manusia{
//…
} 

Dengan contoh di atas maka class dari pegawai akan mewarisi informasi dari dua base class yaitu orang dan manusia.

Contoh Program

#include <iostream>
#include <string>
using namespace std;

class orang{
    public:
    string nama;

    orang(string pNama):
        nama(pNama){
        cout<<"orang dibuat\n"<<endl;
    }
    ~orang(){
        cout<<"orang dihapus\n"<<endl;
    }
};

class manusia{
    public:
    string jenisKelamin;

    manusia(string pJenisKelamin):
        jenisKelamin(pJenisKelamin){
        cout<<"manusia dibuat\n"<<endl;
    }
    ~manusia(){
        cout<<"manusia dihapus\n"<<endl;
    }
};

class pelajar: private manusia, public orang{
    public:
    string sekolah;

    pelajar(string pNama, string pJenisKelamin, string pSekolah):
        orang(pNama),
        manusia(pJenisKelamin),
        sekolah(pSekolah){
        cout<<"pelajar dibuat\n"<<endl;
    }
    ~pelajar(){
        cout<<"orang dibuat\n"<<endl;
    }
    string perkenalan(){
        return "Hallo, nama saya " + nama + " dengan jenis kelamin " + jenisKelamin + " dari sekolah " + sekolah + "\n\n";
    }
};

int main(){
    pelajar andi("andi laksono", "Laki-Laki", "belajarcpp");
    cout<<andi.perkenalan();

    return 0;
}

One Reply to “Penjelasan dan Tipe-tipe Pewarisan (Inheritance)”

  1. I feel tһis is among the sо mucһ siɡnificant info fߋr mе.
    Ꭺnd i am glad studying уour article. However shoulɗ statement
    on feᴡ normal things, The website style is ideal, tһe articles іs
    truⅼy nice :D. Just right job, cheers.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *