Dasar Konsep Inheritance Pada Java Yang Perlu Diketahui
Setelah sebelumnya anda mengetahui mengenai apa itu inheritance, sebagai salah satu konsep Java, tujuan dari inheritance ini ialah untuk menambahkan fungsionalitas dari class yang sudah ada.
Inheritance merupakan pilihan yang baik ketika:
Class X
Class X di atas mempunyai dua anggota yaitu a dan juga method_Satu().
Class Y
Class Y di atas mempunyai dua anggota juga yaitu b dan method_Dua().
Pengertian dari class Y extends X ialah anggota dari class X diwariskan pada class Y. Makara kini class Y selain mempunyai dua anggota juga akan mendapat pemanis dua anggota lain yang diwariskan atau inherit dari class X.
Untuk lebih jelasnya lihat gambar di bawah:
1) Constructor, Blok Inisialisasi Static dan Blok Inisialisasi Instance dari superclass tidak akan di wariskan pada subclass. Namun, mereka akan dihukum saat subclass menciptakan objek.
Class X
Class Y
Class Test
Output:
Blok Inisialisasi Static class X
Blok Inisialisasi Instance class X
Constructor dari class X
2) Anggota static dari superclass akan diwariskan pada subclass sebagai anggota static demikian pula dengan anggota non-static hanya akan diwariskan sebagai anggota non-static.
3) Jika anda menuliskan arahan program:
Class X
Class Y
Maka compile time error akan terjadi, misal:
Implicit super constructor X() is undefined for default constructor. Must define an explicit constructor
Di sini compiler akan memaksa anda untuk menulis constructor di class Y. Karena anda tidak mendefinisikan constructor untuk class Y. Makara compiler akan menyediakan constructor default.
Untuk menghindari error ini, anda sanggup memakai super() untuk memanggil pernyataan constructor pada class X. Namun, ketika pribadi menerapkan super() pada class Y, maka compile time error masih tetap akan terjadi.
Oleh sebab itu, anda harus menulis konstruktor pada subclass dalam hal ini class Y, gres kemudian di dalam konstruktor tersebut anda sanggup memanggil constructor superclass dalam hal ini class X secara eksplisit.
Seperti referensi di bawah ini:
Class X
Class Y
4) Secara default semua class termasuk class yang anda buat ialah merupakan subclass dari class Object atau java.lang.Object.
5) Anda sanggup memanggil constructor dari superclass secara eksplisit melalui pernyataan super() dari constructor subclass. Selain itu anda juga sanggup memanggil constructor lain pada class yang sama melalui pernyataan this(), namun anda tidak sanggup memanggil constructor subclass melalui constructor superclass.
6) Pengaruh dari access modifier
Berikut ini ialah beberapa dampak dari acces modifier pada inheritance:
Inheritance merupakan pilihan yang baik ketika:
- Hirarki class menerangkan korelasi IS-A dan bukan korelasi HAS-A
- Memerlukan memakai kembali arahan dari class dasar.
- Memerlukan untuk menerapkan class dan method-method yang sama pada banyak sekali tipe data yang berbeda
- Hirarki class tidak terlalu dalam dan tidak banyak penambahan level lagi.
- Memerlukan untuk melaksanakan perubahan secara global pada class turunan dengan mengubah class dasar.
Class X
public class X { int a; void method_Satu(){ } }
Class X di atas mempunyai dua anggota yaitu a dan juga method_Satu().
Class Y
public class Y extends X { int b; void method_Dua(){ } }
Class Y di atas mempunyai dua anggota juga yaitu b dan method_Dua().
Pengertian dari class Y extends X ialah anggota dari class X diwariskan pada class Y. Makara kini class Y selain mempunyai dua anggota juga akan mendapat pemanis dua anggota lain yang diwariskan atau inherit dari class X.
Untuk lebih jelasnya lihat gambar di bawah:
Beberapa Hal Yang Perlu Diingat Pada Inheritance
Ada beberapa hal yang perlu diketahui dalam konsep inheritance pada pemrograman Java, diantaranya adalah:1) Constructor, Blok Inisialisasi Static dan Blok Inisialisasi Instance dari superclass tidak akan di wariskan pada subclass. Namun, mereka akan dihukum saat subclass menciptakan objek.
Class X
public class X { int a; static{ System.out.println("Blok Inisialisasi Static class X"); } { System.out.println("Blok Inisialisasi Instance class X"); } X(){ System.out.println("Constructor dari class X"); } }
Class Y
public class Y extends X { int b; }
Class Test
public class Test { public static void main(String[] args) { Y y = new Y(); } }
Output:
Blok Inisialisasi Static class X
Blok Inisialisasi Instance class X
Constructor dari class X
2) Anggota static dari superclass akan diwariskan pada subclass sebagai anggota static demikian pula dengan anggota non-static hanya akan diwariskan sebagai anggota non-static.
3) Jika anda menuliskan arahan program:
Class X
public class X { int a; X(int a) { System.out.println("Constructor dari class X"); } }
Class Y
public class Y extends X { int b; }
Maka compile time error akan terjadi, misal:
Implicit super constructor X() is undefined for default constructor. Must define an explicit constructor
Di sini compiler akan memaksa anda untuk menulis constructor di class Y. Karena anda tidak mendefinisikan constructor untuk class Y. Makara compiler akan menyediakan constructor default.
Untuk menghindari error ini, anda sanggup memakai super() untuk memanggil pernyataan constructor pada class X. Namun, ketika pribadi menerapkan super() pada class Y, maka compile time error masih tetap akan terjadi.
Oleh sebab itu, anda harus menulis konstruktor pada subclass dalam hal ini class Y, gres kemudian di dalam konstruktor tersebut anda sanggup memanggil constructor superclass dalam hal ini class X secara eksplisit.
Seperti referensi di bawah ini:
Class X
public class X { int a; X(int a) { System.out.println("Constructor dari class X"); } }
Class Y
public class Y extends X { int b; Y(){ /** Memanggil constructor class X secara eksplisit */ super(100); System.out.println("Constructor dari class Y"); } }
4) Secara default semua class termasuk class yang anda buat ialah merupakan subclass dari class Object atau java.lang.Object.
5) Anda sanggup memanggil constructor dari superclass secara eksplisit melalui pernyataan super() dari constructor subclass. Selain itu anda juga sanggup memanggil constructor lain pada class yang sama melalui pernyataan this(), namun anda tidak sanggup memanggil constructor subclass melalui constructor superclass.
6) Pengaruh dari access modifier
Berikut ini ialah beberapa dampak dari acces modifier pada inheritance:
- private: anggota private tidak sanggup diwariskan pada subclass.
- default : anggota default sanggup diwariskan pada subclass di dalam package yang sama
- protected: anggota protected sanggup diwariskan pada subclass manapun, meskipun berada diluar package superclass. Anggota protected hanya sanggup diakses di luar package melalui inheritance saja.
- public: anggota public sanggup diwariskan pada seluruh subclass
Belum ada Komentar untuk "Dasar Konsep Inheritance Pada Java Yang Perlu Diketahui"
Posting Komentar