1. Tujuan Praktikum
Agar praktikan dapat memahami dan mengimplementasikan konsep inheritance serta
konsep polimorfisme
2. Alat dan Bahan
Command Prompt
Java Development Kit
Teks Editor (Sublime Text, Atom, dll)
3. Teori Dasar
3.1. Inheritance
Secara umum, dengan hanya menggunakan satu class untuk membuat dua atau lebih
entitas yang serupa tetapi berbeda, bukanlah merupakan desain yang baik. Dalam
pemrograman berorientasi objek, digunakan mekasisme yang disebut dengan inheritance
untuk merancang dua atau lebih entitas yang berbeda tetapi berbagi banyak fitur umum.
Inheritance atau pewarisan/penurunan adalah konsep pemrograman di mana sebuah class
dapat „menurunkan‟ atribut dan method yang dimilikinya kepada class lain. Konsep ini
digunakan untuk memanfaatkan fitur „code reuse‟ untuk menghindari duplikasi kode program.
Pertama, kita mendefinisikan class yang berisi fitur-fitur umum entitas. Kemudian,
definisikan suatu class sebagai perpanjangan atau turunan dari class umum yang akan
mewarisi segalanya dari class umum. Class umum ini disebut dengan superclass, ancestor,
parent class, ataupun base class. Untuk semua class turunan dari superclass disebut dengan
subclass, descendant, child class, ataupun derived class.
Dengan inheritance, class baru (subclass) akan mirip dengan class yang lama (superclass)
namun memiliki karakteristik yang baru. Dalam Java, subclass hanya bisa memiliki satu
superclass (single inheritance). Sedangkan, superclass bisa memiliki satu subclass atau lebih.
BangunRuang
Balok Limas
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). Di
dalam java, kontrol pengaksesan dapat digambarkan dalam tabel berikut ini:
private √
default √ √
protected √ √ √
public √ √ √ √
Keyword “super” digunakan oleh subclass untuk memanggil member dari superclass,
seperti constructor ataupun method yang ada pada superclass-nya. Adapun keyword “this”
dipakai untuk merujuk pada member dari class itu sendiri.
Contoh untuk memanggil constructor milik superclass :
super()
super(parameter)
super.namaAtribut
super.namaMethod(parameter)
3.2. Polimorfisme
Polimorfisme mempunyai makna „sesuatu yang memiliki banyak bentuk‟. Sehingga,
dalam bahasa pemrograman Java dapat diartikan sebagai konsep pemrograman di mana
terdapat method dengan nama yang sama, tetapi memiliki kelakuan (behavior) yang berbeda.
BangunRuang
hitungLuas()
hitungVolume()
Balok Limas
hitungLuas() hitungLuas()
hitungVolume() hitungVolume()
Gambar 3.2
Dari gambar diagram di atas, terlihat bahwa class BangunRuang merupakan superclass
dari class Balok dan Limas. Class BangunRuang ini memiliki method hitungLuas() serta
hitungVolume(). Dapat dilihat pula bahwa subclass-nya juga memiliki kedua method tersebut.
Meskipun ketiga class itu mempunyai nama method yang sama, tetapi isi (source code/yang
dilakukan/output) dari masing-masing method itu berbeda.
3.2.1. Method Overriding
Method Overriding adalah kemampuan dari subclass untuk memodifikasi method dari
superclass, yaitu dengan cara menumpuk (mendefinisikan kembali) method superclass-nya.
Contoh method overriding dapat dilihat pada Gambar 3.2, di mana pada subclass Balok yang
mendefinisikan kembali method hitungLuas() dan hitungVolume() dari superclass-nya.
Adapun beberapa hal yang perlu diperhatikan dalam menggunakan method overriding,
yaitu sebagai berikut :
Parameter yang terdapat pada method overriding di subclass harus sama dengan
parameter yang terdapat pada superclass.
Hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan
hak akses method pada parent class.
3.2.2. Method Overloading
Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class
mempunyai dua atau lebih method dengan nama yang sama, tetapi memiliki parameter yang
berbeda. Pada method overloading perbedaan parameter mencakup :
Jumlah parameter
Tipe data dari parameter
Urutan dari tipe data parameter
4. Langkah Praktikum
4.1. Inheritance
4.1.1. Mendefinisikan superclass dan subclass
1) Buat class baru dengan nama BangunRuang seperti kode berikut :
public class BangunRuang{
5) Buat class baru dengan nama Balok yang menurunkan class BangunRuang seperti
kode berikut :
public class Balok extends BangunRuang {
6) Buat constructor untuk memberi nilai awal pada variabel seperti kode berikut :
...
Balok(float p, float l, float t){
super(p,l,t);
}
...
8) Buat class baru yang bernama Praktikum untuk menjalankan program yang telah
dibuat :
public class Praktikum {
public static void main (String[] args){
}
}
9) Buat objek dari class Balok pada class Praktikum seperti kode berikut :
...
Balok satu = new Balok(3,4,5);
...
11) Simpan semua file yang telah dibuat dan jalankan di command prompt.
5) Simpan kedua file di atas dan coba jalankan. Apa yang terjadi? Pasti terjadi error.
6) Sekarang ubahlah sedikit kode pada constructor class Child seperti berikut ini :
...
public Child(){
super();
x = 5;
}
...
4.2. Polimorfisme
4.2.1. Method Overriding
1) Bulatlah class dengan nama Limas yang menurunkan class BangunRuang seperti
berikut :
public class Limas extends BangunRuang {
3) Buat method overriding dari method hitungVolume() yang ada pada superclass atau
class BangunRuang untuk menghitung volume limas seperti kode berikut ini :
...
float hitungVolume() {
float volume = (p*l*t)/3;
return volume;
}
...
4) Buka class Praktikum yang telah dibuat pada percobaan sebelumnya, kemudian buat
objek baru dari class Limas.
...
Limas dua = new Limas(2,4,6);
...
...
double phi = 3.14;;
...
3) Buat method baru untuk menghitung volume tabung seperti pada kode berikut ini :
...
int volume(int r, int t){
int v = (int) (phi*r*r*t);
return v;
}
...
5) Buka kembali class Praktikum, kemudian buat objek baru dari class Tabung.
...
Tabung tiga = new Tabung();
...
6) Tambahkan perintah output untuk melihat hasil dari method volume() dengan
parameter integer :
...
System.out.println("Volume Tabung pertama: " + tiga.volume(2,7));
...
7) Tambahkan perintah output untuk melihat hasil dari method volume() dengan
parameter double :
...
System.out.println("Volume Tabung kedua :" + tiga.volume(2.0,7.0));
...