4 inheritance (pewarisan)
TRANSCRIPT
-
7/22/2019 4 Inheritance (Pewarisan)
1/12
Inheritance (Pewarisan)
PEWARISAN (INHERITANCE)
Salah satu fitur yang paling kuat dalam OOP adalahpenggunaan kode kembali (code reuse). Sekali sebuahprosedur dibuat, maka kita bisa menggunakannya berulangkali
Dalam OOP, kemampuan yang dimiliki tidak hanya itu.Kita juga bisa mendefinisikan hubungan antar kelas yangtidak hanya dimanfaatkan untuk code reuse, tapi juga darisegi pendesainannya yang jauh lebih baik, yaitu dengancara mengelola kelas-kelas dan faktor kemiripan di antarakelas-kelas tersebut.
-
7/22/2019 4 Inheritance (Pewarisan)
2/12
Fitur pewarisan (inheritance) mengijinkan sebuahkelas, yang disebut superclass, untuk menurunkanatribut-atribut dan method-methodnya kepada kelaslainnya yang disebut subclass (child)
Terdapat beberapa karakteristik darisubclass:
-subclass adalah bentuk khusus dari sebuah
superclass
-dalam sebuahsubclassterdapat atribut danmethod yang diturunkan darisuperclass
- subclassbisa memiliki fitur tambahan yang
berbeda dari fitur-fitur yang diturunkan dari
superclass-nya
-
7/22/2019 4 Inheritance (Pewarisan)
3/12
CONTOH PEWARISAN
JENIS-JENIS PEWARISAN
Single inheritance, yaitu hanya terdapat satusuperclass
Multiple inheritance, yaitu terdapat lebih dari satusuperclass. Bahasa Java tidak mengakomodasimultiple inheritance
-
7/22/2019 4 Inheritance (Pewarisan)
4/12
Pewarisan adalah kemampuan sebuah kelas untukmewariskan atribut-atribut dan methodnya-methodnya ke kelas lain, sehingga atribut danmethod tersebut dikenal oleh kelas yang menerima
pewarisan tanpa harus menuliskannya. Pewarisanini merupakan implementasi dari hubungan antarkelas generalisasi-spesialisasi.
-
7/22/2019 4 Inheritance (Pewarisan)
5/12
Kelas yang mewariskan disebut kelas induk, superclass, atau base class sedangkan kelas yangmenerima pewarisan disebut kelas anak, kelasturunan, atau subclass.
Pewarisan dapat dilakukan jika :
Ada beberapa atribut dan method yang sama yangdigunakan oleh beberapa kelas berbeda (reduksipenulisan kode)
Ada satu atau beberapa kelas yang sudah pernahdibuat yang dibutuhkan oleh aplikasi (reusability)
Ada perubahan kebutuhan fungsional atau featureaplikasi dimana sebagian atau seluruh perubahantersebut tercakup di satu atau beberapa kelas yangsudah ada (extend)
-
7/22/2019 4 Inheritance (Pewarisan)
6/12
Pewarisan di Java
Pewarisan di Java hanya mengenal pewarisantunggal, artinya sebuah kelas hanya mewarisi atributdan method dari satu kelas induk. Untukmenggunakan pewarisan di Java digunakan keywordextends.
Contoh Pewarisan
-
7/22/2019 4 Inheritance (Pewarisan)
7/12
//Employee.java
public class Employee {
public String name;
public Date birthDate;
public double salary;
public String getDetails() {...}
}
//Manager.java
public class Manager extends Employee {public String department;
}
-
7/22/2019 4 Inheritance (Pewarisan)
8/12
Dari kode di atas, terlihat bahwa atribut name,birthDate, dan salary serta methodgetDetails() diturunkan ke kelasManagersehingga kelasManager dapat menggunakan atribut
dan method tersebut.
Konstruktor dari kelas induk tidak dapat diturunkankepada kelas turunannya.
Untuk menggunakan method dan konstruktor darikelas induk pada kelas anak digunakan keywordsuper
//Employee.java
public class Employee {
private String name;
private double gaji;
public Employee (String s, double g) {
name = s;gaji = g;
}
public double getgaji() {
return gaji;
}
}
-
7/22/2019 4 Inheritance (Pewarisan)
9/12
//Manager.java
public class Manager extends Employee {
private String alamat;
private double tunjangan;
private double bonus;
public Manager(String nama, String s, double gaji){
super(nama, gaji);
alamat = s;
}
Public double getgaji() {
return (super.getgaji()+tunjangan+bonus);
}
}
Ketika kode dalam satu kelas (kelas A) memiliki akses
ke kelas yang lain (kelas B), hal tersebut berarti kelas A
dapat melakukan satu dari tiga hal berikut :
Membuatinstancekelas B;
Meng-extendskelas B (dengan kata lain, menjadisubclassdari kelas A);
Mengakses atribut danmethodtertentu dalam kelas Btergantung dariaccess control atribut danmethodnya.
-
7/22/2019 4 Inheritance (Pewarisan)
10/12
Access modifier yang dapat diterapkan pada kelasadalah akses default (friendly) dan public.
Dalam deklarasinya, sebuah kelas denganaccessmodifier defaulttidak memilikimodifierdi depan namakelasnya. Kelas yang memiliki aksesdefaultberarti kelasini hanya dapat diakses oleh kelas yang berada di dalampackage yang sama. Contoh, jika kelas A dan B terletak didalam package yang berbeda, dan kelas A memiliki aksesdefault, maka kelas B tidak dapat membuatinstancedarikelas A atau bahkan tidak dapat mendeklarasikan
variabel yang bertipe kelas A. Perhatikan contoh berikutini:
Contoh
package packageOne;
class Animal { }
package packageTwo;
import packageOne.Animal;class Dog extends Animal { }
SuperclassAnimal berada di dalam package yang berbeda dengansubclassnya, yaitu
Dog. Pernyataan import di dalam kelas Dog berusaha mengimpor kelas Animal. Ketikaproses kompilasi dijalankan, kelas Animal dapat dikompilasi, tetapi tidak dengan kelasDog. Hal ini disebabkan karenasuperclassAnimal mempunyai akses default dan terletakdi dalam package yang berbeda. Kelas yang dideklarasikan public dapat diakses olehkelas yang berada di manapun, termasuk oleh kelas yang berada di package yangberbeda. Jika contoh kode di atas dimodifikasi dengan menjadikan kelas Animalmemiliki access modifier public, maka kedua kelas tersebut dapat dikompilasi.
-
7/22/2019 4 Inheritance (Pewarisan)
11/12
Access modifier
Tabel di bawah ini merupakan rangkuman
aksesibilitas dari access modifierpada class member
(atribut dan method).
package1
OK OK
OKOK
OK
OKNO
NO
+ b : int
# c : int
- d : int
Class1
a : int
Class2 SubClass1
-
7/22/2019 4 Inheritance (Pewarisan)
12/12
package3 package1 package2
NO NO
OK OK
NOOK
NONO
Class2 SubClass1
+ b : int
# c : int
- d : int
Class1
a : int
Latihan
Buatlah kode Java untuk diagram UML berikut