Inheritance pada Java

Inheritance (Pewarisan) Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat ‘menurunkan’ property dan method yang dimilikinya kepada class lain. Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode program. Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class), super class, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut sebagai class anak (child class), sub class, derived class atau heir class.

Berikut adalah contoh penerapan Inheritance pada Java :


class Peliharaan{
    private String makanan;
    void makan(){
        System.out.println("Niyam Niyam *makan" + makanan);
    }
    void tidur(){
        System.out.println("Zzzzzz....");
    }
}

class Kocheng extends Peliharaan{
    Kocheng(){
        this.makanan = "ikan";
    }
    void meong(){
        System.out.println("Meow~");
    }
   
}

class inherit{
    public static void main(String args[]){
        Kocheng angkko = new Kocheng();
        angkko.makan();
        angkko.tidur();
        angkko.meong();
    }
}

Pada program di atas bisa dilihat bahwa kelas Kocheng merupakan turunan dari kelas Peliharaan, sehingga property dan method yang terdapat kelas Peliharaan diwariskan kepada kelas Kocheng. Untuk membuktikannya, dibuat sebuah objek bernama angkko dari kelas Kocheng dan memanggil method yang objek tersebut miliki.

Pada saat program dijalankan, compiler memberikan error message seperti berikut :

Hal ini dikarenakan property makanan bersifat Private, yang berarti hanya dapat diakses oleh kelas di mana property tersebut berada. Untuk mengakses property Private, dapat digunakan method non-Private seperti berikut :

class Peliharaan{
    private String makanan;
    Peliharaan(String makan){
        makanan = makan;
    }
    void makan(){
        System.out.println("Niyam Niyam *makan" + makanan);
    }
    void tidur(){
        System.out.println("Zzzzzz....");
    }
}

class Kocheng extends Peliharaan{
    Kocheng(){
        super("ikan");
    }
    void meong(){
        System.out.println("Meow~");
    }
   
}

class inherit{
    public static void main(String args[]){
        Kocheng angkko = new Kocheng();
        angkko.makan();
        angkko.tidur();
        angkko.meong();
    }
}

Pada program di atas, digunakan constructor method pada kelas Peliharaan untuk mengubah nilai property makanan. Pada constructor kelas Kocheng, dipanggil konstruktor kelas induknya (super) dengan argumen "ikan", sehingga "ikan" menjadi nilai default dari property makanan pada kelas Kocheng.

Output : 
 

Kelas Kocheng tidak memiliki method makan() dan tidur(), namun pemanggilan method bisa dilakukan karena kedua method tersebut diturunkan dari kelas Peliharaan.

Comments