Inheritance
Sebuah class atau objek bisa saling berhubungan dengan class yang lain.Salah satu
bentuk hubungannya adalah inheritance (pewarisan). Hubungan ini seperti hubungan keluarga
antara orang tua dan anak.
Sebuah class di Java, bisa memiliki satu atau lebih keturunan atau class anak. Class
anak akan memiliki warisan properti dan method dari class ibu.
Misal kita membuat Game dengan class – class musuh dengan perilaku yang berbeda.
Bentuk kelas diagramnya seperti ini :
File Zombi.java
class Zombie {
String name;
int hp;
int attackPoin;
void attack(){
// ...
}
void walk(){
//...
}
}
1
File Pocong.java
class Pocong {
String name;
int hp;
int attackPoin;
void attack(){
// ...
}
void jump(){
//...
}
}
File Burung.java
class Burung {
String name;
int hp;
int attackPoin;
void attack(){
// ...
}
void walk(){
//...
}
void jump(){
//...
}
void fly(){
//...
} }
2
Apakah kamu setuju dengan kode 3 program di atas ?
Dari tiga program di atas ada beberapa yang sama yaitu properti dan method. Kode program
menjadi kurang efektif karena harus menulis berulang – ulang kode properti dan methodnya.
Bagaimana solusinya ?
Kita melihat member kelas yang sama dari bentuk kelas diagram.
Class Enemy adalah class induk yang memiliki anak Zombie, Pocong, dan Burung. Apapun
properti yang ada di class induk, akan dimiliki juga oleh class anak.
3
Lalu bagaimana bentuk kodenya :
File Enemy.java
class Enemy {
//properti
String name;
int hp;
int attackPoin;
//method
void attack(){
System.out.println("Serang!");
}
}
Pada class anak, kita menggunakan kata kunci extends untuk menyatakan kalau dia adalah
class turunan dari Enemy.
File Zombie.java
File Pocong.java
4
File Burung.java
5
Latihan menggunakan inheritance
1. BangunDatar.java
float keliling(){
System.out.println("Menghitung Keliling bangun
datar");
return 0;
}
}
2. Linkaran.java
6
}
3. Persegi.java
4. PersegiPanjang.java
5. Segitiga.java
6. Main.java
7
//membuat objek lingkaran dan mengisi nilai
properti
Lingkaran mLingkaran = new Lingkaran();
mLingkaran.r =22;
mPersegi.luas();
mPersegi.keliling();
mLingkaran.luas();
mLingkaran.keliling();
mPersegiPanjang.luas();
mPersegiPanjang.keliling();
mSegitiga.luas();
mSegitiga.keliling();
8
}
Output :