Belajar Pemrograman Java Dari Dasar

11 Aturan Inheritance Pada Java Serta Contohnya

Hallo gan, setelah anda sebelumnya mengetahui apa itu inheritance juga konsep-konsep dasarnya yang perlu diketahui, maka kali ini akan dibahas mengenai 12 aturan inheritance pada Java beserta dengan contoh-contohnya sehingga anda akan mudah mengaplikasikannya pada dan memahaminya ketika melakukan coding Java.

inheritance-pada-java-contoh

Aturan dan Contoh Inheritance Java

Berikut ini adalah aturan dan contoh pada inheritance yang perlu anda ketahui.

1. Semua class inherit dari class objek secara langsung ataupun tidak langsung

Setiap class yang dibuat pada Java inherit dari class Objek. Meskipun tidak dinyatakan secara eksplisit.

Contoh:

public class Mobil {
 
}


Secara implisit:

public class Mobil extends Object {
 
}


2. Dalam inheritance, suatu contructor tidak dapat diwariskan

Constructor dari superclass tidak dapat diwariskan kepada subclass, namun bisa dipanggil dengan menggunakan keyword super().

Bila sebuah constructor secara eksplisit tidak memanggil constructor dari superclass, maka compiler secara otomatis akan memanggil constructor tanpa argumen secara implisit.

Contoh:

public class Kendaraan {
 
 //Ini constructor tanpa argument
 public Kendaraan(){
  System.out.println("Ini kendaraan");
 }
 
}



public class Mobil extends Kendaraan {
 
 public Mobil(){
  super();//Sebenarnya super() ini tidak harus ditulis, karena dipanggil secara implisit oleh compiler
 }

}

Tapi jika superclass memiliki constructor dengan argumen tertentu dan subclass tidak memanggil constructor tersebut secara ekplisit maka compile error akan terjadi.

Contoh:

public class Kendaraan {
 
 protected String nama;
 
 public Kendaraan(String nama){
  this.nama = nama;
 }
}



public class Mobil extends Kendaraan {
 String brand;
 
 public Mobil(String brand){
  super(brand);
  this.brand = brand;
 }

}


Contoh kode berikut ini akan menimbulkan compile error:

public class Mobil extends Kendaraan {
 String brand;
 
 public Mobil(String brand){
  this.brand = brand;
 }

}

3. Acces modifier pada inheritance


Pada inheritance, member dengan acces modifier private tidak dapat diwariskan. Sedangkan member default dapat diwariskan asalkan berada dalam package yang sama, jadi di luar itu tidak dapat diwariskan. Untuk member protected hanya dapat diakses oleh subclass melalui inheritance baik itu pada package yang sama ataupun berbeda. Terakhir adalah member public yang dapat diwariskan di mana saja.

4. Mengakses member dari superclass


Untuk mengakses member dari superclass maka keyword super dapat digunakan.

Contoh:

public class Kendaraan {

 protected void bergerak(){
  System.out.println("Kendaraan bergerak!");
 }
}


public class Mobil extends Kendaraan {
 
 protected void bergerak(){
  System.out.println("Mobil bergerak!");
 }
 
 public void test(){
  super.bergerak();
  this.bergerak();
 }
}

Bisa dilihat baik itu superclass ataupun subclass memiliki method yang sama yaitu bergerak(), ini adalah overriding. Jadi class Mobil dapat memanggil method bergerak milik class Kendaraan dengan keyword super().

5. Referensi dan deklarasi objek

Ini adalah bagian yang menarik dari inheritance dimana referensi dari superclass bisa menjadi referensi objek dari subclass.




Perhatikan contoh berikut ini:

public class Kendaraan {

 protected void bergerak(){
  
 }
}


public class Mobil extends Kendaraan {
 
 protected void injakGas(){
  
 }
}


class Test{
 
 public static void main(String[] args) {
  
  Kendaraan kendaraan = new Mobil();
  
 }
}

Aturannya adalah referensi objek superclass yang berada disebelah kiri bisa menjadi referensi untuk sub type yang berada disebelah kanan.

Selanjutnya, bila dilanjutkan dengan pemanggilan method:

class Test{
 
 public static void main(String[] args) {
  
  Kendaraan kendaraan = new Mobil();
  
  kendaraan.bergerak();//bisa dilakukan
  
  kendaraan.injakGas();//tidak bisa dilakukan
 }
}

Ketika objek memanggil method milik superclass maka hal ini bisa dilakukan, seperti pada kendaraan.bergerak(). Namun, ketika subclass memiliki method baru, maka method tersebut tidak bisa dipanggil melalui referensi dari superclass, seperti kendaraan.injakGas().

6. Multi inheritance pada interface


Dalam Java, multi inheritance pada interface diizinkan untuk dilakukan. Interfaces itu sendiri merupakan 100% class abstract.

Contoh:

public interface A {
 
 public void methodA();

}

public interface B {
 
 public void methodB();

}

public interface C extends A,B {
 
 public void methodC();

}

public class D implements A, B, C {

 @Override
 public void methodA() {
  
 }

 @Override
 public void methodB() {
  
 }

 @Override
 public void methodC() {
  
  
 }

}

Hal di atas bisa dilakukan karena interfaces tidak memiliki method yang konkrit sehingga tidak menimbulkan kerancuan.

7. Tidak boleh multi inheritance pada class


Java tidak membolehkan suatu class inherit pada dua class atau lebih secara langsung. Ini dikarenakan jika dilakukan akan menimbulkan keraguan. Dan jika dilakukan akan menimbulkan masalah yang dikenal dengan Deadly Diamond of Death.

8. Aturan ketika suatu interface inherit dari interface lainnya

Ketika suatu interface adalah inherit dari interface lainnya maka sub interface tersebut mewarisi semua method dari super interface. Kemudian, sub interface itu memiliki kebebasan apakah akan memakai semua method tersebut atau tidak.

Contoh:

public interface Workable {
 
 public void workA();
 public void workB();
 public void workC();

}

public interface Repairable extends Workable {
 
 public void workA();//mengimplementasikan method workA()
 public void serviceA();
 public void serviceB();
 public void serviceC();

}

9. Inheritance dan interface pada class

Dalam Java, ketika class inherit dari class lainnya, maka secara bersamaan juga bisa mengimplementasikan interface.

Contoh:

public interface dapatDigerakkan {
 
 public void bergerak();

}

public class KendaraanRodaDua {

 protected void melaju(){
  
 }
 
 public void berhenti(){
  
 }
}

public class Motor extends KendaraanRodaDua implements dapatDigerakkan {

 @Override
 public void bergerak() {
  
 }
 
 
}

10. Aturan pada acces modifier

Acces modifier public dan protected dari member superclass akan diwariskan pada subclass ketika inheritance (extends) dilakukan. Sedangkan untuk member class dengan acces modifier default hanya akan diwariskan ketika berada dalam package yang sama.

11. Inheritance pada class abstract dan interface

Ketika suatu class abstract mengimplementasikan interface maka class abstract tersebut tidak perlu meng-override method dari interface tersebut. Tapi, class konkrit yang pertama kali inherit dari class abstract tersebut harus meng-override method-method tersebut.

Contoh:

public interface dapatDigerakkan {
 
 public void berhenti();
 public void bergerak();
 public void startMesin();
 public void stopMesin();

}


public abstract class KendaraanRodaDua implements dapatDigerakkan {
 
 public void startMesin(){
  System.out.println("Mesin kendaraan dinyalakan!");
 }
 
 public void stopMesin(){
  System.out.println("Mesin kendaraan dimatikan!");
 }

}


public class Motor extends KendaraanRodaDua {

 @Override
 public void berhenti() {
  System.out.println("Motor berhenti!");
 }

 @Override
 public void bergerak() {
  System.out.println("Motor bergerak!");
 }
 
}

Pada contoh di atas class KendaraanRodaDua adalah class abstract.  Jadi class ini bisa mengimplementasikan 2 method dari interface dapatDigerakkan, yaitu method startMesin() dan stopMesin(). Oleh karena itu, 2 method lainnya yaitu berhenti() dan bergerak() dari interface itu harus di implementasikan pada class konkrit yaitu class Motor.

Tapi, ketika class abstract tidak mengimeplementasikan sama sekali method dari interface maka class konkrit yang pertama kali inherit dari class abstract tersebut harus mengimplementasikan semua method dari interface tersebut.

Sebagai tambahan yang juga penting diketahui, ketika suatu class konkrit (non-abstract) mengimplementasikan interface maka class tersebut wajib mengimplentasikan seluruh method-method dari interface tersebut. Arti mengimplemntasikan adalah memberikan method dari interface itu body karena semua method-method yang terdapat pada interface adalah method abstract yang tidak memiliki body method.


Demikianlah penjelasan mengeni aturan-aturan pada inheritance beserta dengan contohnya. Semoga bisa membantu anda yang sedang memahami topik yang serupa ketika belajar Java.

Share on Facebook
Share on Twitter
Share on Google+

Tempat berbagi pengetahuan untuk bahasa pemrograman Java

Related : 11 Aturan Inheritance Pada Java Serta Contohnya