Salah satu kelebihan pemrograman
berorientasi objek adalah penggunaan ulang kode-kode yang telah dibuat.
Pewarisan adalah salah satu cara untuk menggunakan kode-kode yang telah dibuat
sebelumnya.
Sebagai
contoh kelas manusia diturunkan menjadi kelas: programmer, tentara.
/*
Disimpan
dalam file “programmer.java”
*/
public
class programmer extends manusia
{
public programmer(String n)
{
super(n);
}
public void kerja()
{
System.out.println("Tak…Tak…Klik..");
}
public void bersantai()
{
System.out.println("Game
over, You lose...");
}
}
/*
Disimpan
dalam file “tentara.java”
*/
class
tentara extends manusia
{
public String pangkat;
public tentara(String n, String
p)
{
super(n);
this.pangkat= p;
}
public String tampilkanPangkat()
{
return pangkat;
}
public void kerja()
{
System.out.println("Dor...
Dor... Dor..");
}
}
Keyword super digunakan untuk
memanggil metodh yang ada pada baseclass,
sedangkan this
menunjukkan/mereferensi pada objek terkini Andi adalah seorang programmer keturunan manusia, setelah dia
makan lalu kerja dan terakhir
dia bersantai dengan komputernya sehingga implementasi dengan kode javanya.
/*
Disimpan
dalam file “andi.java”
*/
class
andi
{
public static void main(String
arg[])
{
programmer andi= new
programmer("Andi");
System.out.println("Nama=
"+ andi.tampilkanNama());
andi.makan();
andi.kerja();
andi.bersantai();
}
}
Kalau
dieksekusi class Andi akan menghasilkan
Nama=
Andi
Nyam...
nyam... nyam...
Tak.Tak..Klik..
Setelah Objek andi memberitahu
namanya, dia makan dengan metodh warisan dari kelas manusia, kemudian dia kerja dengan metodh
khusus kelas programmer dan terakhir dia bersantai juga dengan metodh khusus
kelas programmer.
Kelas turunan akan mewariskan
atribut-atribut dan metodh-metodh parentclassnya/baseclass, akan tetapi dia tidak mewarisi konstruktor-konstruktornya sehingga
ketika andi makan maka dia makan dengan metodh dari parentclassnya
(manusia).
Akan
tetapi ketika dia kerja, dia kerja dengan metodh baru yang didefinisikan khusus
pada kelas programmer (“Tak…Tak…Klik.. “ bukan “Kerja….kerjaaa…”), inilah yang
disebut dengan metodh overriding.
Lainhalnya dengan Andi, Badu adalah
seorang tentara berpangkat kopral keturunan manusia. Suatu saat dia ditanya
atasannya nama dan pangkatnya, kemudian dia disuruh makan dan kemudian
diperintah untuk kerja, maka kode javanya :
/*
Disimpan
dalam file “badu.java”
*/
public
class badu
{
public static void main(String
arg[])
{
tentara badu= new
tentara("Badu","Kopral");
System.out.println("Nama=
"+ badu.tampilkanNama());
System.out.println("Pangkat=
"+ badu.tampilkanPangkat());
badu.makan();
badu.kerja();
}
}
Dalam kasus badu, selain badu
mewarisi atribut nama dari manusia, sebagai tentara dia mempunyai atribut
pangkat. Jadi dalam pewarisan, kita bisa menambah atribut-atribut baru dan juga
bisa menambahkan metodh-metodh baru, bahkan mengoverride metodh yang
ada pada parentclassnya.
Metodh Final
Metodh final adalah metodh yang
tidak bisa dioverride oleh subclassnya. Pendefinisian metodh final dengan cara menambahkan keyword
final didepan definisi metodh tersebut, seperti pada contoh berikut
Public
final void tidur();
System.out.println(“Zzz..Zzzz..Zzzzzzz”);
Dengan
cara seperti ini maka kita mendefinisikan bahwa metodh tidur adalah dengan cara
System.out.println(“Zzz..Zzzz..Zzzzzzz”);
Baik dilakukan oleh
kelasnya sendiri maupun oleh anak cucu kelasnya.