Penggunaan Modifier Protected dalam Konsep Pewarisan Java

Materi kali ini adalah lanjutan dari materi Belajar Konsep Pewarisan (Inheritance) pada Java (OOP) yang bisa sobat seciko baca pada postingan sebelumnya. Modifier protected merupakan hak akses yang hanya bisa diakses oleh kelas tersebut berikut dengan semua kelas sub (keturunannya). Sehingga kelas yang berada diluar hirarki tersebut tidak bisa mengakses atribut ataupun metode yang dideklarasikan sebagai modifier protected.

Contoh Penggunaan Modifier Protected

Berikut adalah contoh penggunaan modifier protected dalam perwarisan.

Class A{
public int a;
public void a(){
System.out.println(“metode a()dari kelas A”);
}
}

Class B extends A{
public int b;
public void b(){
a();
System.out.println(“metode ()dari kelas B”);
}
}
Class C extends B{
public static void main(String[]args){
c kelasC =new C();
kelasC.a=10;
kelasC.b=15;
kelasC.a();
System.out.println(“a=”+kelasC.a);
kelasC.b();
System.out.println(“b=”+kelasC.b);
}
}


class C extends B {
public void panggil() {
System.out.println(“Nilai : “+nilai);
System.out.println(“Huruf : “+huruf);
nilai = 14;
huruf = ‘B’;
System.out.println(“Nilai : “+nilai);
System.out.println(“Huruf : “+huruf);
System.out.println(“\nMemanggil method cetakA()”);
cetakA (“Kelas C”);
System.out.println(“\nMemanggil method cetakB()”);
cetakA (“Kelas C”);
}

public static void main (String[ ] args) {
A orang 1 = new A ();
B orang 2 = new B ();
C orang 3 = new C ();
\\orang1.cetakAP (); 
\\orang2.cetakBP (); 
orang3.panggil (); 
}
}

Tampilan Output

Nilai : 10
Huruf : A
Nilai : 14
Huruf : B
Memanggil method cetak A()
Hallo Kelas C
Ini adalah method dari kelas A
Memanggil method cetak B()
Hallo Kelas B
Ini adalah method dari kelas A
Hallo Kelas C
Ini adalah method dari kelas B

Urutan Eksekusi Konstruktor

Konstruktor yang dikerjakan oleh program adalah konstruktor default kelas-kelas induknya. Adapun urutan eksekusi konstruktor, dikerjakan secara berurutan dimulai dari kelas yang memiliki hhirarki paling tinggi sampai ke pada kelas yang diinstansiasi atau disebut juga dengan alur ancestor.

Contoh, terdapat hirarki kelas sebagai berikut:
A – B – C, missal kelas A menempati hirarki tertinggi, maka konstruktor yang dikerjakan adalah A() – B() – C().

Perhatikan contoh program di bawah ini :

class A {
  public A() {
     System.out.println(“Konstruktor kelas A”);
  }
}
class B extends A {
  public B() {
     System.out.println(“Konstruktor kelas B”);
  }
}
class C extends B {
  public C() {
     System.out.println(“Konstruktor kelas C”);
  }
}
class D extends B {
  public D() {
     System.out.println(“Konstruktor kelas D”);
  }
}
class DemoKonstruktor {
     public static void main (String[ ] args) {
         System.out.println (“Meinstansiasi kelas C”);
         C kelasC = new C (); // Perhatikan sintaks ini
         System.out.println (“Meinstansiasi kelas D”);
         D kelasD = new D (); // Perhatikan sintaks ini 
    }
}

Tampilan Output

Menginstansiasi kelas C
Konstruktor kelas A
Konstruktor kelas B
Konstruktor kelas C
Menginstansiasi Kelas D
Konstruktor kelas A
Konstruktor kelas B
Konstruktor kelas D

Urutan Eksekusi Konstruktor dari instansiasi kelas C

Urutan Hirarki

Penjelasan :

  • Metode main() pada kelas DemoKonstruktor meinstansiasi kelas C dengan nama objek KelasC, sekaligus memanggil konstruktor C(). Setelah itu kursor program menuju ke kelas C.
  • Pada kelas C terdapat pertanyaan, “apakah kelas C memiliki kelas super (induk)?” karena kelas B merupakan kelas super dari kelas C, maka kursor program menuju kelas B.
  • Pada kelas B terdapat pertanyaan yang sama, “apakah kelas B memiliki kelas super (induk)?” karena kelas A merupakan kelas super dari kelas B, maka kursor program menuju kelas A.
  • Pada kelas A terdapat pertanyaan yang sama, “apakah kelas A memiliki kelas super (induk)?” karena kelas A tidak memiliki, maka program mengeksekusi konstruktor A() dan kursor kembali ke posisi sebelumnya yakni kelas B.
  • Program mengeksekusi konstruktor B() dan kursor kembali ke posisi sebelumnya yakni kelas C.
  • Program mengeksekusi konstruktor C() dan kursor kembali ke posisi sebelumnya yakni kelas DemoKonstruktor. Dan proses dinyatakan selesai

Penggunaan Kata Kunci Super dan Metode Super()

Kata kunci super adalah kata kunci yang digunakan untuk menunjuk atribut maupun metode kelas super (induk). Metode super() adalah metode yang digunakan untuk memanggil konstruktor dari kelas super (induk).

Penggunaan Kata Kunci Super

Biasanya penggunaan kata kunci super dilakukan jika kelas super (induk) dan kelas sub (anak) menunjuk nama atribut yang sama. Sehingga kita akan kebingungan untuk membedakan mana atribut milik kelas super dan mana milik kelas sub.

Contoh Program Penggunaan Kata Kunci Super pada Java

class A {
  protected int a,b;
}
class B extends A {
  protected int a,b;
  public void setabKelasInduk (int a, int b) {
    super.a = a;
    super.b = b;
  }
  public void setabKelas (int a, int b) {
    this.a = a;
    this.b = b;
  }
  public String getabKelasInduk () {
   return “a:”+super.a+” & b:”+super.b;
  }

Tampilan Output

Memanggil metode getabKelasInduk()
A:2 & b:4
Memanggil metode getabKelas()
A:6 & b:8

Penjelasan

Pada program ini, baik kelas super (kelas A) dan kelas sub (kelas B) masing-masing memiliki  atribut a dan b , lalu bagaimana membedakan mana atribut a dan b milik kelas A, dan mana atribut a dan b milik kelas B. karna kelas A merupakan kelas super dari kelas B, maka untuk membedakannya yaitu dengan menggunakan kata kunci super untuk mengakses atribut a dan b milik kelas A.

Penggunaan Metode Super()

Metode super()  merupakan metode yang berfungsi untuk memanggil konstruktor dari kelas super (induk). Penggunaan dari metode super() ini sebenarnya sangat disarankan. Dikarenakan pemanggilan konstruktor kelas super secara implicit/otomatis rawan terjadinya error.

Contoh Program Penggunaan Metode Super pada Java

Bentuk umum Penggunaan Metode Super

Konstruktor {
   super (argumen1, argumen2, argumen3);
   …
   // diikuti dengan statement lain
}

Contoh Program

class B extends A {
  B() {
     super (); //Memanggil konstruktor default kelas A
    }
}
class C extends A {
  C() {
      super (10); //Memanggil konstruktor kelas A yang memiliki
    //argument bertipe data int
  }
}

Untuk memahami konsep-konsep mengenai metode super(), perhatikan contoh program dibawah ini :

class A {
A () {
System.out.println (“Konstruktor kelas A”);
}
}

class B extends A {
B () {
System.out.println (“Konstruktor kelas B”);
}
}

class C extends B {
C () {
System.out.println (“Konstruktor kelas C”);
}
}

class D {
public static void main (String [ ] args) {
C kelasC = new C ();
}
}

Tampilan Output

Konstruktor kelas A
Konstruktor kelas B
Konstruktoe kelas C

Penggunaan metode overriding

Sebuah metode dikatakan overriding, jika dalam hirarki kelas terdapat nama metode yang sama tetapi pada kelas yang berbeda. Dengan kata lain, jika sebuah kelas sub (anak) membuat nama metode yang sama dengan nama metode yang dimiliki oleh kelas super (induk), maka metode pada kelas sub tersebut dikatakan meng-override metode. Sehingga jika kita memanggil metode tersebut dari kelas sub-nya, maka metode milik kelas sub yang akan di eksekusi. Meng-override metode sering juga disebut me-replace metode.

Metode overriding hanya akan terjadi jika mendeklarasikan metode didalam kelas sub yang sama persis dengan metode yang dideklarasikan pada kelas super-nya.

Contoh Program Penggunaan metode Overriding pada Java

class A {
  public void cetak() {
    System.out.println(“Metode dari kelas A”);
   }
}
class B extends A {
   public void cetak() {  //Meng-override metode
     System.out.println(“Metode dari kelas B”);
   }
}
class C {
  public static void main (String [ ] args) {
    B kelasB =  new B();
    kelasB.cetak();
  }
}

Tampilan Output

Metode dari kelas B

Penggunaan Kata Kunci Final Dalam Pewarisan

Kata kunci final dibagi menjadi 3 macam kegunaan,yaitu:

1.Kata kunci final yang digunakan pada atribut (atribut final)

2.Kata kunci final yang digunakan pada metode (metode final)

3.Kata kunci final yang digunakan pada kelas (kelas final)

Metode final
Metode Final
adalah metode yang tidak dapat di-override oleh kelas sub-nya. Artinya semua keturunan dari kelas tersebut tidak boleh ada nama metode yang sama dengan metode final. Sehingga, jika ada nama metode yang sama dengan nama metode final, maka akan mengakibatkan terjadinya error.

Cara mendeklarasikan metode final

<modifier> final <tipeData> <namaMetode>(<*argument>){
//Badan Metode
}

Cara pendeklarasian metode final sama saja dengan mendeklarasikan metode biasa, hanya saja cantumkan kata kunci final diantara modifier dan tipe data.

Itulah sedikitnya penjelasan tentang “Inheritance (Pewarisan)” yang saya dapatkan dari buku Mastering OOP in Java From Beginner to expert.

Semoga dengan dibuatnya materi Postingan ini dapat memudahkan Pembaca untuk mempelajari ilmu Bahasa Pemrograman Java khususnya Materi Pewarisan serta dapat menyebarkannya pada orang-orang di sekitar kita.

Terimakasih.

Mochamad Rizky Heryandi

Setiap ilmu yang kita dapatkan harus kita amalkan sebelum kita kembali kepada Nya.

Mungkin Anda juga menyukai

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.