Inheritance

Salah satu topik penting dalam OOP adalah inheritance, pewarisan sifat. Dengan inheritance, pengembang software dapat bekerja lebih efisien dan lebih cepat. Berkat inheritance, ia dapat menggunakan definisi class yang sudah pernah dibuat sebelumnya untuk membuat class-class lain yang menyerupai class tersebut. perhatikan contoh di bawah ini :

public class KattWorld{
public static void main(String args []) {
Katt k = new Katt ();
k.speak ( );
Angora a = new Angora ( );
a.speak( ); a.jump ( );

Siam s = new Siam ( );
s.speak ( );
}
}

class Katt {
public Katt ( ) {
System.out.println(“Katt constructor”);
}
public void speak ( ) {
System.out.println(“Miaww…”);
}
}

class Angora extends Katt {
public  void jump ( ) {
System.out.println(“Crash…boom..”);
}
}

class Siam extends Katt{
public Siam ( ) {
System.out.println(“Siam constructor”);
}

public void speak( ) {
System.out.println(“mmurrr…murrrrr….”);
}
}

Yang harus diperhatikan adalah cara melakukan inheritance. Pada koding diatas kita memiliki satu class bernama Katt. Seiring berjalannya waktu, kita berniat membuat class lain yang mempunyai sifat-sifat seperti Katt, tetapi memiliki keunikan tersendiri. Contohnya adalah class Angora. Berdasarkan niatan tersebut, kita dapat memanfaatkan kembali (reuse) class Katttersebut untuk mewujudkan Angora – tanpa harus mengulang dari awal hal-hal yang telah dilakukan pada class Katt. Kita dapat membuat subclass dari Katt. Dalam kalimat lain, kita dapat mengembangkan class Katt.

Dapat dikatakan bahwa class Katt menjadi parentclass (baseclass atau superclass) dari class Angora. Secara umum, dapat mendefinisikan suatu class sebagai turunan dari baseclass dengan cara berikut :

class namaclass extends baseclass {

[statement-statement];

}

Dalam class Katt, kita sudah mendefinisikan bahwa instance dari Katt dapat speak(), dia akan mengeong  ….miaww… Dan dengan mengembangkan Katt, instance dari Angora juga dapat mengeong, dengan cara yang sama ….miawww…Perhatikan, kita tidak mendefinisikan method speak() pada definisi class Angora. method speak() diwarisi oleh Angora dari class Katt. Subclass mewarisi method-method dan field-field dari parentclass. Akan tetapi subclass tidak mewarisi constructor-constructor parentclass.

Angora memiliki karakteristik khusus yang tidak dimiliki Katt — ia dapat melompat, jump(). Sekarang jelas,mengapa Angora disebuat pengembangan dari Katt. pengembangan aplikasi dengan paradigma OOP begitu dekat, begitu mirip dengan teknik -teknik yang dilakukan dalam pengembangan produk di dunia nyata. untuk menang, selalu terdepan dalam mengeluarkan produk terbaru, produsen otomotif dapat menggunakan hasil-hasil kerja rancangan para teknisi yang sudah-sudah untuk membuat rancangan baru, dengan menambah disana-sini ,menyempurnakan disana-sini, tanpa harus memulai dari nol.

Method overiding

Suatu saat, kita ingin membuat varian lain dari Katt yang mengeong dengan cara agak lain ….Murrr…murrrr…murr…

Kita namai varian itu Siam. Seperti sebelumnya, kita mendefinisikan Siam sebagai subclass dari Katt. Tapi kini kita lakukan method overiding, kita mendefinisikan ulang method speak() di dalam definisi class Siam.

Coba jalankan aplikasi Kattworld…, kita akan mendapatkan output sebagai berikut :

Katt constructor

Miaww…

Katt constructor

Miaww…

Crash…boom.

Katt constructor

Siam constructor

Murrr..murrr…

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