Rekayasa Perangkat Lunak
201
class Bangun { double panjang;
double lebar;
constructor dengan argumen Bangundouble p, double l {
panjang = p; lebar = l;
} method yang mengembalikan nilai
double hitungLuas {
double luas = panjang lebar; return luas;
} }
class pakaiBangun { public static void mainString[] args {
Bangun b; instansiasi obyek
b = new Bangun; memanggil method isiData dan mengisi argumennya
b.isiData6,8; memanggil method hitungLuas untuk objek b
System.out.printlnLuas b = + b.hitungLuas; }
}
Kode di atas sekilas sama dengan contoh 8.26, namun sebenarnya berbeda. Pada kode ini terdapat
constructor dengan nama yang sama dengan kelasnya yaitu Bangun.
Constructor seperti halnya method yang lain boleh mempunyai argumen dan boleh tidak. Pada contoh di atas kita
constructor Bangun mempunyai argumen p dan l.
8.8.2. Penerapan I nheritance
Prinsip inheritance atau pewarisan, secara umum telah kalian pelajari di awal bab. Pewarisan adalah keuntungan besar dalam pemrograman beorientasi
obyek karena suatu sifat atau method yang telah didefinisikan dalam superclass, secara otomatis diwariskan dari pada semua subclasses. Jadi kita mungkin
hanya perlu mendefinisikan method satu kali di superclass kemudian dapat kita gunakan pada subclass. Perhatikan contoh berikut.
Contoh 8.28. Penerapan inheritance.
Di unduh dari : Bukupaket.com
202
Rekayasa Perangkat Lunak
class SuperA { private int a;
public void setSuperAint nilai { a = nilai;
} public int getSuperA {
return a; }
}
membuat kelas turunan subclass dari kelas A class SubB extends SuperA {
private int b;
public void setSubBint nilai { b = nilai;
} public int getSubB {
return b; }
}
class DemoKelasTurunan1 { public static void mainString[] args {
melakukan instansiasi terhadap kelas B SubB ObyekB = new SubB;
mengeset nilai objek dari kelas B ObyekB.setSuperA50;
ObyekB.setSubB200;
mendapatkan nilai yang terdapat dalam objek dari kelas B
System.out.printlnNilai a : + Obyek.getSuperA; System.out.printlnNilai b : + Obyek.getSubB;
}
}
Pada kode di atas, class SuperA adalah super class yang memiliki satu data yaitu a dan dan dua method yaitu setSuperA dan getSuperA. Class SubB
adalah turunan dari kelas SuperA perhatikan deklarasi
class SubB extends SuperA
. Data dan method yang ada pada class SuperA secara otomatis akan dibawa ke class SubB. Sehingga class SubB akan mempunyai dua data yaitu a
dan b. Data a adalah hasil warisan dari class SuperA sedang data b adalah milik class SubB sendiri. Method pada class SubB akan terdiri dari empat method,
yaitu setSuperA dan getSuperA yang merupakan warisan dari class SuperA serta class setSubB dan getSubB yang milik class SubB sendiri. Cobalah ketik program
di atas kemudian jalankan dan cermati hasil yang diperoleh.
Di unduh dari : Bukupaket.com
Rekayasa Perangkat Lunak
203
Perhatikan contoh yang lain berikut ini. Contoh 8.29. Penerapan inheritance untuk menghitung luas dan volume.
class Bangun { protected double panjang;
protected double lebar;
constructor default Bangun {
panjang = lebar = 0; }
Bangundouble p, double l { panjang = p;
lebar = l; }
method yang mengembalikan nilai public double hitungLuas {
double luas = panjang lebar; return luas;
} }
class Box extends Bangun { private double tinggi;
constructor class Box Box int p, int l, int t {
panjang =
p; lebar
= l;
tinggi =
t; }
public double getTinggi { return
tinggi; }
public double hitungVolume { double volume = panjang lebar tinggi;
return volume;
} }
class inheritBangun { public static void mainString[] args {
Box kotak; instansiasi obyek
kotak = new Box6, 8, 3;
Di unduh dari : Bukupaket.com
204
Rekayasa Perangkat Lunak
memanggil method hitungLuas, getTinggi dan hitung volume
System.out.printlnLuas salah satu sisi = + kotak.hitungLuas;
System.out.printlnTinggi kotak = + kotak.getTinggi;
System.out.printlnVolume kotak = + kotak.hitungVolume;
}
}
Kelas Bangun di atas adalah superclass sedangkan Box adalah subclass. Pada default constructor Bangun, nilai panjang dan lebar diinisialisasi dengan
nilai 0. Perhatikan didepan deklarasi variabel panjang dan lebar pada kelas Bangun dicantumkan kata kunci protected yang berarti kelas turunan dari
Bangun tetap dapat mengakses nilai dari variabel tersebut namun yang tidak memiliki hubungan turunan tidak dapat mengaksesnya.
Pada Box yang merupakan subclass ditambahkan satu variabel yaitu tinggi dengan tambahan kata kunci private diikuti tipe datanya. Private menunjukkan
bahwa variabel tinggi hanya bisa diakses didalam kelas Box. Lawan dari private adalah public, yang berarti dapat diakses oleh siapapun dan dari manapun. Pada
kelas Box juga kita tambahkan satu method yaitu hitungVolume. Pada contoh 8.29 di atas obyek yang kita buat yaitu kotak, merupakan hasil instansiasi dari
kelas Box. Oleh karena kelas Box adalah turunan dari kelas Bangun, maka kita dapat mengakses method hitungLuas yang merupakan warisan dari kelas
Bangun. Tentu saja kita bisa mengakses method getTinggi dan hitungVolume yang merupakan method pada kelas Box. Kalau kita eksekusi
program di atas, maka akan tampak seperti berikut.
Gambar 8.15. Hasil eksekusi program kelas Bangun dan Box.
8.8.3. Penerapan Overriding dan Overloading