Inheritance (Pewarisan)


1. Pewarisan (Inheritance)

Pewarisan adalah hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain. Pewarisan menunjuk pada properti dan behaviour yang diterima dari nenek moyang dari class. Ini dikenal juga sebagai hubungan “is-a”. Perhatikan pada hirarki berikut.

ScreenHunter_198 Feb. 21 18.58

SuperHero  adalah  superclass  dari  class  FlyingSuperHero  dan  UnderwaterSuperHero. Catatan bahwa  FlyingSuperHero  “is-a”  SuperHero.  Sebagaimana  juga  underwaterSuperHero  “is-a” SuperHero

Untuk  membuat  class  anak  atau  subclass  berdasarkan  class  yang  telah  ada,  kita gunakan  kata kunci  extend  dalam  mendeklarasikan  class.  Sebuah  class  hanya  dapat  meng-extend  satu  class induk. Sebagai contoh, class Point di bawah ini adalah superclass dari class ColoredPoint.

import java.awt.*;
class Point {
int x;
int y;
}

class ColoredPoint extends Point {
Color color;
}

2. Keyword Super

Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini dilakukan  dengan  pemanggil  construktor  super.  Pemanggil  constructor  super  dalam constructor  dari  subclass  akan  menghasilkan  eksekusi  dari  superclass  constructor  yang bersangkutan, berdasar dari argumen sebelumnya.

Format penulisannya adalah sebagai berikut :

super.data_member

Merujukk pada data member pada parent classÆmerujuk pada data member pada parent class

super.function_member()

Merujuk pada function member pada parent class

super()

Merujuk pada konstruktor pada parent class

3. Keyword This

Kata kunci this mengacu ke variabel instant dari kelas tersebut. Berguna untuk mengakses variabel instan yang didefinisikan di parameter. Biasanya digunakan dalam konstruktor atau method. Digunakan dalam untuk menyatakan objek yang sekarang.

Bentuk umum penggunaannya:

this.<nama_variabel_instant>;

Contoh :

Class Bernaz {
int umur;  // umur = variabel instant bertipe integer
Bernaz(int umur) ;
this.umur = umur;
// mengakses variabel instant
}
}

4. Overriding

Method  subclass  override  terhadap  method  superclass  ketika  subclass  mendeklarasikan  method yang signaturenya serupa ke method dalam superclass. Signature dari method hanyalah informasi yang ditemukan dalam definisi method bagian atas. Signature mengikutkan tipe return, nama dan daftar  parameter  method  tetapi  itu  tidak  termasuk  acces  modifier  dan  tipe  yang  lain  dari  kata kunci seperti final dan static. Inilah perbedaan dari method overloading. Method overloading secara singkat didiskusikan dalam sub bagian pada kata kunci this.

class Superclass {
void display(int n) {
  System.out.println("super: " + n);}
}

class Subclass extends Superclass {
void display(int k) {  //method overriding 
System.out.println("sub: " + k);}  

}

class OverrideDemo {
   public static void main(String args[]) {
   Subclass SubObj = new Subclass();
   Superclass SuperObj = SubObj;
   SubObj.display(3);

  ((Superclass)SubObj).display(4);

   }

Ini akan menghasilkan keluaran sebagai berikut.

sub: 3
sub: 4

Pemanggilan method ditentukan oleh tipe data sebenarnya dari object yang diminta method.

Acces modifier untuk method yang dibutuhkan tidak harus sama. Bagaimanapun, acces modifier dari method overridding mengharuskan salah satunya punya acces modifier yang sama seperti itu dari method overridden atau acces modifier yang kurang dibatasi.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s