2. 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.
3. 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.
4.
5. 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 {
…
}
6. Kapan kita menerapkan inheritance? pada saat kita
jumpai ada suatu class yang dapat diperluas dari
class lain.
7. • 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.
8. public class Pegawai {
public String nama;
public double gaji;
}
public class Manajer {
public String nama;
publi double gaji;
public String departemen;
}
Misal Terdapat Class Pegawai Misal Terdapat Class Manager
• 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;
}
9. Konsep inheritance yang ada di Java adalah hanya
memperkenankan adanya single inheritance.
Konsep single inheritance hanya memperbolehkan suatu
sublass mempunyai satu parent class.
10. 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.
11. public class Anak extends Bapak {
}
public class Bapak {
protected void Nama(){
System.out.println("Nama Saya Deny");
}
protected void Pekerjaan(){
System.out.println("Pekerjaan Saya Wirausaha");
}
}
public class BelajarInheritance {
public static void main(String[] args){
Anak mhs = new Anak();
mhs.Nama();
mhs.Pekerjaan();
}
}
Buat class dengan nama
Bapak
Untuk menginduk
pada suatu class, kita
menggunakan kata kunci extends.
instansiasi objek pada main
class (BelajarInheritance)
Bapak.java
Anak.java
BelajarInheritance.java
13. public class Binatang {
String SuaraBinatang, SuaraBinatang2;
public void tampilSuara()
{
SuaraBinatang ="Guk Guk Guk !";
SuaraBinatang2="Meong Meong";
System.out.println("Tampil Suara");
}
}
public class Anjing extends Binatang {
public void suaraAnjing(){
// method dari class Anjing
System.out.println ("Suara Anjing :"+SuaraBinatang);
}
}
public class CetakBinatang {
//main Class
public static void main(String[] args){
Anjing suara=new Anjing();
suara.tampilSuara();
suara.suaraAnjing();
Kucing suara2=new Kucing();
suara2.tampilSuara();
suara2.suaraKucing();
}
}
public class Kucing extends Binatang{
public void suaraKucing(){
// method dari class kucing
System.out.println("Suara Kucing :"+SuaraBinatang2);
}
}
Binatang.java
Kucing.java
Anjing.java
CetakBinatang.java
14. Konsep inheritance yang ada di Java memperkenankan adanya
multilevel inheritance.
Konsep multilevel inheritance memperbolehkan suatu subclass
mempunyai subclass lagi.
15.
16. 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.
17. public class Anak extends Bapak {
}
public class Bapak {
protected void Nama(){
System.out.println("Nama Saya Deny");
}
protected void Pekerjaan(){
System.out.println("Pekerjaan Saya Wirausaha");
}
}
public class BelajarInheritance {
public static void main(String[] args){
Anak mhs = new Anak();
mhs.Nama();
mhs.Pekerjaan();
}
}
Kalau modifier ini di ganti private
progran tidak berhasil karen
private hak akses hanya di dalam
class saja
18.
19. 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.
20. 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
24. 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.
25. 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.
26. public class RerataNilaiOverloading {
int x1, x2, x3;
double y1, y2;
public int average(int x1, int x2) {
return (x1+x2)/2;
}
public double average(double y1, double y2) {
return (y1+y2)/2;
}
public int average(int z1, int z2, int z3) {
return (z1+z2+z3)/3;
}
}
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));
}
}
Contoh Overloading
nama methodnya sama
(average) ttp fungsi dan
parameter berbeda
RerataNIlaiOverloading.java
TesOverloading.java
parameter berbeda
27. 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.
28. main
Kucing
+main()
hewan
suara()
Berjalan()
Suara()
Anjing
Suara()
Ayam
Suara()
class Anjing extends Animal {
public void animalSound() {
System.out.println("Anjing Suaranya gug gug");
}
}
class Kucing extends Animal{
public void AnimalSound(){
System.out.println("Kucing suaranya : Meong meong");
}
}
class AnimalBeraksi {
public static void main(String[] args) {
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();
myAnimal.animalSound();
myAyam.animalSound();
myAnjing.animalSound();
myKucing.animalSound();
}
}
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Ayam extends Animal {
public void animalSound() {
System.out.println("Ayam suaranya : kukuruyuk");
}
}