Anda di halaman 1dari 28

Pengertian Dasar Inheritance

 Inheritance (pewarisan) merupakan salah satu konsep dasar


OOP.
 Konsep inheritance mengadopsi dunia nyata dimana suatu
entitas/obyek dapat mempunyai entitas/obyek turunan.
 Dengan konsep inheritance, sebuah class dapat mempunyai
class turunan.
 Class yang mempunyai class turunan dinamakan parent
class atau base class, sedangkan class turunan seringkali
disebut subclass atau child class.
 Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh
parent class.
Pengertian Dasar Inheritance
 Karena suatu subclass dapat mewarisi apa yang dipunyai oleh
parent class, maka subclass terdiri dari apa-apa yang diwarisi
dari class parent-nya.
 Kesimpulannya, bahwa suatu subclass tidak lain hanya
memperluas (extends) parent class-nya.
Deklarasi Inheritance
 Untuk mendeklarasikan inheritance dengan menambahkan
kata kunci extends setelah deklarasi nama class, kemudian
diikuti dengan nama parent class-nya.
 Kata kunci extends tersebut memberitahu kompiler Java
bahwa kita ingin melakukan perluasan class.

public class A {

}
public class B extends A {

}
 Kapan kita menerapkan inheritance? pada saat kita
jumpai ada suatu class yang dapat diperluas dari
class lain.
Keuntungan Inheritance
• Keuntungan dari Inheritance adalah Reusability
 Sekali perilaku(method) didefinisikan pada superclass, maka
perilaku tersebut secara otomatis diwariskan ke subclass,
sehingga hanya perlu menulis method sekali dan bisa
digunakan untuk semua subclass.
 Sekali properti/field di definisikan di superclass, maka semua
properti di wariskan ke semua subclass. Superclass dan
subclass berbagi properti.
 Subclass hanya perlu mengimplementasikan jika ada
perbedaan dengan parentnya.
Misal Terdapat Class Pegawai Misal Terdapat Class Manager

public class Pegawai { public class Manajer {


public String nama; public String nama;
public double gaji; publi double gaji;
} public String departemen;
}

• Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang
identik sama dengan class Pegawai, hanya saja ada tambahan data member
departemen.
• Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari
class Pegawai dengan tambahan data member departemen.
• Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita
tuliskan seperti berikut :

public class Manajer extends Pegawai {


public String departemen;
}
Single Inheritance
 Konsep inheritance yang ada di Java adalah hanya
memperkenankan adanya single inheritance.
 Konsep single inheritance hanya memperbolehkan suatu
sublass mempunyai satu parent class.
Contoh gambar pewarisan pada kelas hewan

• Hewan adalah superclass dari karnivora dan herbivora.


• Class turunan karnivora dan herbivora memiliki data dan method yang
dimiliki kelas hewan.
Contoh program dgn Inhertance
Bapak.java
public class Bapak {
protected void Nama(){ Buat class dengan nama
System.out.println("Nama Saya Deny"); Bapak
}
protected void Pekerjaan(){
System.out.println("Pekerjaan Saya Wirausaha");
}
}

Anak.java
public class Anak extends Bapak { Untuk  menginduk pada  suatu
 class,  kita menggunakan  kata
 kunci  extends.  
}

public class BelajarInheritance { BelajarInheritance.java


public static void main(String[] args){
Anak mhs = new Anak(); instansiasi objek pada main
mhs.Nama(); class (BelajarInheritance)
mhs.Pekerjaan();
}
}
Tampil Suara
Suara Anjing :Guk Guk Guk !
Tampil Suara
Suara Kucing :Meong Meong
Binatang.java CetakBinatang.java
public class Binatang { public class CetakBinatang {
String SuaraBinatang, SuaraBinatang2; //main Class
public static void main(String[] args){
public void tampilSuara()
{
SuaraBinatang ="Guk Guk Guk !"; Anjing suara=new Anjing();
SuaraBinatang2="Meong Meong"; suara.tampilSuara();
System.out.println("Tampil Suara"); suara.suaraAnjing();
}
Kucing suara2=new Kucing();
}
suara2.tampilSuara();
Kucing.java
public class Kucing extends Binatang{ suara2.suaraKucing();

public void suaraKucing(){ }


// method dari class kucing }
System.out.println("Suara Kucing :"+SuaraBinatang2);
}
}
Anjing.java
public class Anjing extends Binatang {
public void suaraAnjing(){
// method dari class Anjing
System.out.println ("Suara Anjing :"+SuaraBinatang);
}
}
Multilevel Inheritance
 Konsep inheritance yang ada di Java memperkenankan adanya
multilevel inheritance.
 Konsep multilevel inheritance memperbolehkan suatu subclass
mempunyai subclass lagi.
Single dan Multilevel Inheritance
KONTROL PENGAKSESAN
 Dalam dunia yang sebenarnya, belum tentu entitas
induk mewariskan semua apa-apa yang ia punyai
kepada entitas turunan karena sesuatu hal.
 Demikian juga dengan konsep inheritance dalam OOP.
 Suatu parent class dapat tidak mewariskan sebagian
member-nya kepada subclass-nya.
 Sebagai contoh, kita coba untuk memodifikasi class
Pegawai.
Kontrol Pengaksesan

Kalau modifier ini di ganti private


public class Bapak {
progran tidak berhasil karen
protected void Nama(){
System.out.println("Nama Saya Deny");
private hak akses hanya di dalam
} class saja
protected void Pekerjaan(){
System.out.println("Pekerjaan Saya Wirausaha");
}
}

public class Anak extends Bapak {

public class BelajarInheritance {


public static void main(String[] args){
Anak mhs = new Anak();
mhs.Nama();
mhs.Pekerjaan();
}
}
POLYMORPHISM
Polymorphism
 Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk
 Konsep ini memungkinkan digunakannya suatu interface yang sama
untuk memerintah obyek agar melakukan aksi atau tindakan yang
mungkin secara prinsip sama namun secara proses berbeda.
 Polymorphism adalah kemampuan untuk mempunyai beberapa
bentuk yang berbeda.
 Polimorfisme terjadi pada saat suatu obyek bertipe parent class, akan
tetapi pemanggilan konstruktornya melalui subclass.
Polymorphism
 Dalam konsep yang lebih umum,polymorphism sering disebut istilah satu
interface banyak aksi
 Contoh yang konkrit dalam dunia nyata yaitu Mobil
 Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk,
namun semuanya memiliki interface kemudi yang sama, seperti: stir,
tongkat transmisi, pedal gas dan rem
 Jika seseorang dapat mengemudikan satu jenis mobil saja dari satu merk
tertentu, maka orang itu akan dapat mengemudikan hampir semua jenis mobil
yang ada, karena semua mobil tersebut menggunakan interface yang sama.

 Tetapi Harus diperhatikan disini bahwa interface yang sama tidak berarti cara
kerjanya juga sama
 Missal pedal gas, jika ditekan maka kecepatan mobil akan meningkat, tapi
bagaimana proses peningkatan kecepatan ini dapat berbeda-beda untuk
setiap jenis mobil
Ilustrasi

Text
print

print Graph

print
Image
Ilustrasi
Ilustrasi Polymorphism
Tipe Polimorfisme

 Java memiliki 2 tipe polimorfisme


 Polimorfisme kompilasi (static binding)
▪ Polimorfisme statis, contoh pada method overloading.
▪ Overloading : Method yang terjadi di sebuah class yang memiliki nama
method yang sama tetapi memiliki parameter dan tipe data yang
berbeda.
 Polimorfisme runtime (dynamic binding)
▪ Polimorfisme dinamis, contoh pada method overriding.
▪ Overriding adalah suatu cara untuk mendefinisikan ulang method yang ada
pada class induk apabila class anak menginginkan adanya informasi yang
lain.
Polimorfisme Statis
 Polimorfisme statis, contoh pada method overloading.
 Overloading : Method yang terjadi di sebuah class yang
memiliki nama method yang sama tetapi
memiliki parameter dan tipe data yang berbeda.
public class RerataNilaiOverloading { RerataNIlaiOverloading.java
int x1, x2, x3; Contoh Overloading
double y1, y2;

public int average(int x1, int x2) {


return (x1+x2)/2;
nama methodnya sama
} (average) ttp fungsi dan
public double average(double y1, double y2) { parameter berbeda
return (y1+y2)/2;
}
public int average(int z1, int z2, int z3) { parameter berbeda
return (z1+z2+z3)/3;
}
}
TesOverloading.java
public class TesOverloading {
public static void main(String args[]){
RerataNilaiOverloading rn = new RerataNilaiOverloading();
System.out.println("Reratai 21 dan 13 adalah : " + rn.average(21, 13));
System.out.println("Reratai 19.3 dan 39.5 adalah : " + rn.average(19.3, 39.5));
System.out.println("Reratai 123, 567 dan 744 adalah : " + rn.average(123, 567, 744));
}
}
Polimorfisme Dinamis
 Polimorfisme dinamis, contoh pada method overriding.
 Overriding adalah suatu cara untuk mendefinisikan ulang method
yang ada pada class induk apabila class anak menginginkan
adanya informasi yang lain.
Contoh Polimorphism
class Anjing extends Animal {
main hewan public void animalSound() {
System.out.println("Anjing Suaranya gug gug");
+main() suara()
Berjalan() }
}

class Kucing extends Animal{


public void AnimalSound(){
Kucing Anjing Ayam System.out.println("Kucing suaranya : Meong meong");
}
Suara() Suara() Suara() }

class Animal { class AnimalBeraksi {


public void animalSound() { public static void main(String[] args) {
System.out.println("The animal makes a sound"); Animal myAnimal = new Animal(); // Create a Animal object
} Animal myAyam = new Ayam(); // Create a ayam object
} Animal myAnjing = new Anjing(); // Create a Anjing object
Animal myKucing=new Kucing();
class Ayam extends Animal { myAnimal.animalSound();
public void animalSound() { myAyam.animalSound();
System.out.println("Ayam suaranya : kukuruyuk"); myAnjing.animalSound();
} myKucing.animalSound();
} }
}
Contoh Polimorphism
• Gambar disamping ini mempunyai 4 class yaitu 1
main Bangun Datar
class parent BangunDatar dan 3 subclass,
+main() +luas() yaitu: Persegi, Lingkaran, dan Segitiga.
+keliling • Setiap class memiliki method yang sama
yaitu luas() dan keliling(), tetapi method-method
subclass memiliki isi rumus yang berbeda-beda.
Persegi lingkaran Segitiga
+sisi +r +alas
+luas() +luas()
+tinggi
+keliling() +keliling() +luas()
+keliling()

Anda mungkin juga menyukai