Inheritance
Merupakan konsep bahwa suatu kelas dapat mewariskan atribut dan method yang dimilikinya (supperclass) kepada class lain(subclass) serta membentuk kelas yang hirarki. Pewarisan merupakan mekanisme mengekspresikan keserupaan di antara kelas, menyederhanakan pendefinisian kelas yg
serupa dengan kelas yg didefinisikan sebelumnya (Bambang Hariyanto, Ir, 2004). Kelas dalam Java, termasuk kelas yang membangun Java API, merupakan kumpulan subclass dari superclass Object.
• Superkelas (Superclass)
– kelas yang letaknya di atas kelas tertentu di dalam hierarki.
– Superkelas bertindak sebagai kelas yang mewariskan attribut dan method pada kelas dibawahnya (subkelas)
• Subkelas (Subclass)
– kelas yang letaknya di bawah kelas tertentu di dalam hierarki, serta kelas yang mewarisi attribut dan method dari kelas di atasnya (superkelas)
• Pewarisan merupakan sarana untuk menghilangkan penulisan ulang terhadap kode yang dapat digunakan berulang kali, dalam hal ini bersumber pada konteks antara superkelas
dan subkelas.
• Pewarisan memberi fasilitas pemodelan untuk menstrukturkan kelas-kelas menjadi lebih ringkas, dan menangkap apa yang serupa dan apa yang berbeda antara kelas-kelas
Manfaat Inheritance
• Ekstensi dan Batasan
– Subkelas boleh melakukan penimpaan fitur di superkelas
dengan mendefinisikan fitur dengan nama yg sama.
– Subkelas boleh menambah fitur baru sebagai perluasan,
disebut ekstensi, dan subkelas boleh memberikan batasan
attribut, disebut pembatasan.
• Redefinisi operasi
– Penimpaan operasi sebagai perluasan
– Penimpaan operasi sebagai batasan
– Penimpaan operasi sebagai optimasi
– Penimpaan operasi sebagai kenyamana
Keuntungan Inheritance
Reusability
– Ketika behaviour(method) dideklarasikan dalam
superclass, behaviour tersebut otomatis
diwariskan ke seluruh subclass
– Jadi, Anda dapat meng-enkode method hanya
sekali dan method tersebut dapat digunakan oleh
seluruh subclass
– Sebuah subclass hanya perlu
mengimplementasikan perbedaan antara dirinya
sendiri dan parent-nya
• Untuk menjadikan sebuah kelas menjadi subclass dari objek lain dalam java maka dapat menggunakan keyword extends.
Perhatikan contoh berikut :
public class kelasAnak extends kelasInduk
{
}
Keyword “super”
• Sebuah subclass dapat juga memanggil secara eksplisit sebuah constructor superclass yang ada diatasnya.
• Dapat dilakukan dengan menggunakan pemanggilan keyword super.
• Pemanggilan keyword super didalam konstruktor subclass akan mengakibatkan eksekusi dalam konstruktor yang relevan dari superclass, berdasarkan passing argument-nya.
Beberapa hal untuk diingat ketika menggunakan pemanggilan
constructor super :
– Pemanggilan super() HARUS DIJALANKAN SESUAI DENGAN STATEMENT PERTAMA DALAM SEBUAH KONSTRUKTOR.
– Pemanggilan super() hanya dapat digunakan di dalam definisi konstruktor.
– Hal ini menjelaskan bahwa konstruktor this() dan pemanggilan super() TIDAK DAPAT DIJALANKAN SECARA BERSAMAAN DI DALAM CONSTRUCTOR YANG SAMA.
Prinsip Inheritance
• Atribut maupun method pada kelas diatasnya (superclass), dapat diakses oleh kelas dibawahnya (subclass). Namun tidak sebaliknya.
• Menggunakan keyword extends untuk mengubah suatu class menjadi subclass dari objek lain
• Menggunakan keyword super() untuk memanggil secara eksplisit konstruktor kelas diatasnya.