A. PENGERTIAN PEWARISAN (INHERITANCE)
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
- Keyword untuk pewarisan : extends
• Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
• Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
Jika kelas induk merupakan turunan dari kelas lain, maka data dan method yang berasal dari kelas tersebut akan ikut diwariskan pula kepada kelas anaknya.
Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia diturunkan.
B. DEKLARASI PEWARISAN (INHERITANCE)
Deklarasi yang digunakan adalah dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
public class B extends A { … }
Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object.
public class A extends Object { … }
C. KAPAN KITA MENERAPKAN INHERITANCE?
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class
yang dapat diperluas dari class lain.
Misal terdapat class Pegawai public class Pegawai { public String nama; public double gaji; }
Misal terdapat class Manager public class Manajer { public String nama; public double gaji;public String departemen; }
Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang identik sama dengan class Pegawai, hanya saja ada tambahan data member departemen.
Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari class Pegawai dengan tambahan data member departemen.
Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita tuliskan seperti berikut :
public class Manajer extends Pegawai { public String departemen; }
D. KEUNTUNGAN INHERITANCE
1. Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
2. Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.
E. ISTILAH INHERITANCE
1. Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
2. Superclass
Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
3. Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.
4. Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
5. Methode Overriding dan Overloading
• Method overriding adalah mendefinisikan kembali method yang sama, baik nama method maupun signature atau parameter yang diperlukan dalam subclass.
• Method overloading adalah mendefinisikan method yang memiliki nama yang sama, tetapi dengan signature yang berbeda dalam definisi class yang sama.
F. Jenis-Jenis Inheritance
1. Single Inheritance (Pewarisan Tunggal)
Pewarisan yang jumlah kelas dasarnya atau superclassnya tunggal, tetapi bisa memiliki subclassnya lebih dari satu.
Java hanya bisa menggunakan single inheritance.
2. Multiple Inheritance (Pewarisan Jamak)
Kelas yang diturunkan lebih dari satu class yang berbeda atau superclassnya lebih dari satu.
Java tidak mendukung multiple inheritance.
3. Virtual Multiple Inheritance (Pewarisan Jamak Maya)
Kelas yang diturunkan lebih dari satu class yang berbeda hanya saja beberapa kelas dasar merupakan kelas turunan dari kelas dasar yang sama.
Contoh Inheritance :
Animal.java:
Bird.java:
Dog.java:
MainClass.java
Sumber:
http://mungjava.blogspot.co.id/2009/05/memahami-konsep-inheritance-pewarisan.html
http://examples.javacodegeeks.com/java-basics/java-inheritance-example/
http://www.slideshare.net/Goenz/inheritance