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:
  • 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.

Inheritance diimplementasikan dengan memakai keyword extends, contohnya menyerupai di bawah ini:

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:

 tujuan dari inheritance ini ialah untuk menambahkan fungsionalitas dari class yang sudah Dasar Konsep Inheritance Pada Java Yang Perlu Diketahui

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

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel