Java Programming Part II (Inheritance)

Halo Mas Bro dan Mba Sist yang senantiasa mengikuti atau sekedar mampir untuk lihat-lihat tulisan saya. Melanjutkan tutorial sebelumnya mengenai Java Programming, kali ini saya bakal ngebahas tentang pewarisan atau istilah kerennya inheritance

Salah satu konsep dasar dari pemrograman berbasis objek pada java adalah Inheritance, berikut ini sedikit gambaran tentang inheritance. Pada dasarnya, kita melakukan inheritance(pewarisan) untuk membuat suatu class baru(class turunan/subclass) yang masih memiliki sifat atau spesifikasi dari superclass.
Di dalam Java untuk mendeklarasikan suatu class sebagai sub class dilakukan dengan cara menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.

Contoh implementasi inheritance :
     public class Pegawai {
     public String nama;
     public double gaji;   

  }

     public class Manajer extends Pegawai {
     public String departemen;
  }

Pada saat class Manajer menurunkan atau memperluas (extend) class Pegawai, maka ia mewarisi data member yang dipunyai oleh class Pegawai. Dengan demikian, class Manajer mempunyai data member yang diwarisi oleh Pegawai (nama, gaji), ditambah dengan data member yang ia punyai (departemen).


Beberapa aturan tentang pewarisan(inheritance) yang perlu diperhatikan :

  1. Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sub class mempunyai satu parent class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.
  2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass dari class A, kita dapat membuat class baru yang diturunkan dari class B sehingga class baru tersebut akan memiliki apa yang dimiliki class A dan class B. 
  3. Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan).
  4. Kata kunci super dipakai untuk merujuk pada member dari parent class, sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri. Adapun format penulisannya adalah sebagai berikut :
super.data_member -> merujuk pada data member pada parent class super.function_member() -> merujuk pada function member pada parent class
super() -> merujuk pada konstruktor pada parent class

Percobaan 1 : Menggunakan kata kunci super
Berikut ini listing penggunaan kata kunci super.

    class Parent {
    public int x = 5;
  }

    class Child extends Parent {
    public int x = 10;
    public void Info(int x) {
    System.out.println("Nilai x sebagai parameter = " + x);
    System.out.println("Data member x di class Child = " + this.x);
    System.out.println("Data member x di class Parent = " +
    super.x);
  }

 }
    public class NilaiX {
    public static void main(String args[]) {
    Child tes = new Child();
    tes.Info(20);
  }
 

}

Ketika program tersebut dijalankan, akan tampak hasil seperti dibawah ini :
Nilai x sebagai parameter = 20
Data member x di class Child = 10
Data member x di class Parent = 5

Percobaan 2 : Kontrol pengaksesan
Buatlah class Pegawai seperti dibawah ini :

    public class Pegawai {
    private String nama;
    public double gaji;
 }
 

Kemudian buatlah class Manajer seperti ini dibawah ini :  
   
   public class Manajer extends Pegawai {
   public String departemen;
   public void IsiData(String n, String d) {
   nama=n;
   departemen=d;
  }
 

}

Sekarang cobalah untuk mengkompilasi class Manajer diatas. Apa yang terjadi?.
Pesan kesalahan akan muncul seperti ini :

    Manajer.java:5: nama has private access in Pegawai
    nama=n;

Ini membuktikan bahwa class Manajer tidak mewarisi data member nama dari parent class-nya (Pegawai).

Sampai jumpa untuk tutorial berikutnya, semoga dapat bermanfaat dan selamat mencoba..