Last Updated on 12 years by Mas Herdi
Di sore hari ini, saya akan membahas suatu konsep utama pada Java, yaitu inheritance atau pewarisan. Pada bahasa pemrograman Java, suatu kelas bisa diwariskan/diturunkan ke kelas lain, yang secara otomatis ikut mewariskan method maupun atribut dari kelas tersebut. Kelas yang mewarisi method dan atribut dari suatu kelas lain biasa disebut dengan subclass atau extended class. Sedangkan kelas yang mewariskan disebut dengan superclass.
Ide dari inheritance atau pewarisan sendiri sangat simpel, apabila kita ingin membuat kelas baru yang mirip dengan kelas yang sudah ada, dan mempunyai method dan atribut yang sama. Kenapa kita harus membuat dari awal, kalau kita bisa dengan mudah mewariskan atribut dan method dari kelas asal.
Pada platform Java sendiri, semua kelas pada dasarnya mewarisi atribut dan method dari suatu super class, yang bernama Object. Kelas Object bisa dibilang adalah ibu dari segala macam kelas yang ada di Java.
Pada subclass ada beberapa hal yang bisa dilakukan, yatu sebagai berikut :
- Atribut yang diwariskan bisa langsung digunakan, seperti atribut-atribut lain
- Nama variabel/konstanta dari subclass bisa disamakan dengan nama variabel/konstanta pada superclass. Tetapi hal ini tidak disarankan karena kita bisa langsung menggunakan variabel/konstanta superclass pada subclass tanpa harus membuat baru.
- Kalian bisa mendeklarasikan variabel/konstanta baru pada subclass, yang belum ada di superclass.
- Method yang diwariskan bisa langsung digunakan.
- Kalian bisa membuat method baru pada subclass yang mempunyai nama dan atribut yang sama dengan method pada superclass. Hal ini berarti kalian telah melakukan override (menimpa) pada method tersebut.
- Kalian bisa membuat static method baru pada subclass yang mempunyai nama dan atribut yang sama dengan method pada superclass. Hal ini berarti kalian telah melakukan hiding (menyembunyikan) pada method tersebut.
- Kalian bisa mendeklarasikan method baru pada subclass yang belum ada di superclass.
- Kalian bisa membuat konstruktor pada subclass yang memanggil konstruktor pada superclass, baik secara implisit maupun menggunakan keyword
super
.
Contoh demo inheritance/pewarisan pada Java seperti berikut ini :
Kelas Animal.java
Kelas Animal merupakan superclass dari program yang nantinya kelas ini bisa diwariskan ke kelas lainnya.
public class Animal { public String nama; public int umur; public void makan() { System.out.println("Sedang Makan"); } public void mengeluarkanSuara() { System.out.println("Sedang Bersuara"); } }
Kelas Kucing.java
Kelas kucing merupakan subclass dari kelas Animal, karena itu kelas ini akan mewarisi atribut dari kelas Animal.
public class Kucing extends Animal{ @Override public void mengeluarkanSuara() { System.out.println("Meong"); } }
Kelas AnimalTest.java
Kelas ini yang berfungsi sebagai driver untuk menjalankan program, atau bisa disebut juga dengan Main Class. Pada program ini didemokan bahwa walaupun memanggil method yang sama mengeluarkanSuara() namun ternyata program menghasilkan output yang berbeda
public class AnimalTest { public static void main(String[] args) { Animal animal1 = new Animal(); animal1.nama = "Binatang Abstrak"; animal1.mengeluarkanSuara(); Kucing kucing1 = new Kucing(); kucing1.nama = "Kitten"; kucing1.mengeluarkanSuara(); Animal animal2 = new Kucing(); animal2.nama = "Mew"; } }
Kira-kira bagaimana keluaran dari program di atas? Silahkan dicoba ya 😉