Modul 8 : Inheritence - IvanSholana/Pemrograman-Berbasis-Objek-Sistem-Informasi GitHub Wiki

Inheritence

Intheritence atau pewarisan merupakan konsep menurunkan sifat dari induk ke anaknya. Dalam OOP, penurunan/pewarisan sifat tersebut dilakukan dalam hal menurunkan isi dari suatu class seperti atribute dan method. Tujuan dari konsep inheritence ini adalah untuk mengurangi redudansi dalam penulisan atribut dan method jika suatu class memiliki atribut dan method yang sama dengan class lain. Dalam inheritence class yang menurunkan sifatnya disebut Parent Class/SuperClass sedangkan yang menerima pewarisan disebut Child Class/SubClass.

Contoh dari pewarisan adalah:

  1. Class mobil merupakan turunan dari class kendaraan.
  2. Class ikan merupakan turunan dari class hewan.
  3. Class manajer merupakan turunan dari class pegawai.

Untuk mengimplementasikan konsep turunan tersebut dapat dilakukan dengan menggunakan sintaks berikut:

class ParentClass { statement };
class ChildClass extends ParentClass { statement };

Selain mewariskan sifat dari induk ke turunannya, di dalam inheritence juga dapat melakukan modifikasi terdapat struktur turunannya sehingga turunannya dapat memiliki struktur tambahan atau struktur induk yang dimodifikasi yang hal tersebut disebut dengan overidding seperti contoh ilustrasi di bawah ini:

image

Pada gambar di atas terdapat class induk dengan nama Employee dan 2 kelas turunan dengan nama masing masing FullTmeEmployee dan PartTimeEmployee. Kedua kelas turunan tersebut mewarisi seluruh atribute dan method yang dimiliki induknya dan masing masing dari class turunan tersebut memiliki atribute dan method tambahannyaa masing masing yang tidak dimiliki class induk atau parentnya.

Berikut merupakan penerapan inheritence :

class Employee{
    String name;
    Date started;
    public void setName(String name){
        this.name = name;
    }

    public void setStarted(Date started){
        this.started = started
    }
}

class FullTimeEmploye extends Employee{
    Integer pensiontier;
    public void setPensiontier(Integer pensiontier){
        this.pensiontier  = pensiontier;
    }
}

class PartTImeEmployee extends Employee{
    Integer houseworked;
    public void setHouseworked(Integer houseworked){
        this.houseworked = houseworked;
    }
}

Dengan menggunakan kode program di atas, maka seluruh isi dari superClass juga akan menjadi milik subClass. Selain itu, kita perlu berkenalan dengan keyword super. Keyword super digunakan untuk menggunakan isi dari method induknua ketika melakukan overidding sehingga kita tidak perlu menuliskan kembali isi dari method induknya seperti contoh di bawah ini:

class PartTImeEmployee extends Employee{
    Integer houseworked;
    public void setName(String name){
        super.setName(name);
        System.out.println("Hello my name :  " + this.name);
    }
    public void setHouseworked(Integer houseworked){
        this.houseworked = houseworked;
    }
}

Pada contoh di atas terdapat contoh peggunakan super pada method setName yang mana melakukan overidding dengan menambahkan output dari nama yang diiskan dan untuk menginputkan namanya diambil dari induknya menggunakan keyword super.