1. Inheritance / Pewarisan
Inheritance atau Pewarisan/Penurunan adalah konsep pemrograman dimana sebuah class dapat
‘menurunkan’ property dan method yang dimilikinya kepada class lain. Konsep inheritance digunakan
untuk memanfaatkan fitur ‘code reuse’ untuk menghindari duplikasi kode program.
• Inheritance (Pewarisan) merupakan salah Inheritance (Pewarisan) merupakan salah satu dari tiga
konsep dasar OOP.
• Konsep inheritance ini mengadopsi dunia Konsep inheritance ini mengadopsi dunia riil dimana
suatu entitas/obyek dapat mempy y un ai entitas/obyek turunan.
• Dengan konsep inheritance, sebuah class dap py at mempunyai class turunan.
• Suatu class yang mempunyai class Suatu class yang mempunyai class turunan dinamakan parent
class atau base class.
• Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class.
• Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
• Karena suatu subclass dapat mewarisi apa Karena suatu subclass dapat mewarisi apa-apa yang
dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia
punyai dan juga apa-apa yang ia warisi dari class parent-nya.
• Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend)
parent class (extend) parent class nya.
• Dengan menambahkan kata kunci Dengan menambahkan kata kunci extends setelah deklarasi
nama class, kemudian diikuti dengan nama parent kemudian diikuti dengan nama parent class nya.
• Kata kunci extends tersebut memberitahu Kata kunci extends tersebut memberitahu kompiler Java
bahwa kita ingin melakukan perluasan class perluasan class.
• Method Overriding dilakukan saat kita ingin membuat ulang sebuah method pada sub-class atau
class anak. Method Overriding dapat dibuat dengan menambahkan anotasi @Override di atas nama
method atau sebelum pembuatan method.
Contoh :
BANGUN DATAR
==============
package inheritance;
public class BangunDatar {
float luas(){
System.out.println("Menghitung laus bangun datar");
return 0;
}
float keliling(){
System.out.println("Menghitung keliling bangun datar");
return 0;
}
}
PERSEGI
=======
package inheritance;
LINGKARAN
==========
package inheritance;
// jari-jari lingkaran
float r;
PERSEGI LINGKARAN
==================
package inheritance;
SEGITIGA
========
package inheritance;
float alas;
float tinggi;
}
CLASS MAIN
===========
package inheritance;
persegi.luas();
persegi.keliling();
lingkaran.luas();
lingkaran.keliling();
persegiPanjang.luas();
persegiPanjang.keliling();
mSegitiga.luas();
mSegitiga.keliling();
}
}
Extend @Override
PERSEGI
=======
class Persegi extends BangunDatar {
float sisi;
@Override
float luas(){
float luas = sisi * sisi;
System.out.println("Luas Persegi: " + luas);
return luas;
}
@Override
float keliling(){
float keliling = 4 * sisi;
System.out.println("Keliling Persegi: " + keliling);
return keliling;
}
}
LINGKARAN
==========
package inheritance;
// jari-jari lingkaran
float r;
@Override
float luas(){
float luas = (float) (Math.PI * r * r);
System.out.println("Luas lingkaran: " + luas);
return luas;
}
@Override
float keliling(){
float keliling = (float) (2 * Math.PI * r);
System.out.println("Keliling Lingkaran: " + keliling);
return keliling;
}
}
PERSEGI PANJANG
================
package inheritance;
@Override
float luas(){
float luas = panjang * lebar;
System.out.println("Luas Persegi Panjang:" + luas);
return luas;
}
@Override
float keliling(){
float kll = 2*panjang + 2*lebar;
System.out.println("Keliling Persegi Panjang: " + kll);
return kll;
}
}
SEGITIGA
========
package inheritance;
float alas;
float tinggi;
@Override
float luas() {
float luas = 1/2 * (alas * tinggi);
System.out.println("Luas Segitiga: " + luas);
return luas;
}
Untuk class Segitiga, kita hanya melakukan override terhadap method luas() saja. Karena untuk method
keliling(), segitiga memiliki rumus yang berbeda-beda. Atau mungkin bisa diturunkan lagi class segitiga
ini menjadi: SegitigaSiku, SegitigaSamaKaki, SegitigaSamaSisi, dsb.