Abstract Class Dan Interface
Abstract Class Dan Interface
Interface
[email protected]
Outline
[email protected]
Review - Hirarki Animal
[email protected]
review - Polymorphism
[email protected]
Inheritance - Anomali
Animal anim = new Animal();
Object anim masih tidak jelas bentuknya, apakah Dog, Hippo, Lion, atau
yang lain ?
[email protected]
• Object anim
• isi instance variabel nya apa ?
• tidak jelas
• ada Class yang seharusnya tidak pernah di buat objectnya -->
abstract Class
• Class Abstract tidak akan bisa dibuat objectnya.
• Class yang bisa dibuat objectnya : concrete class
[email protected]
[email protected]
Abstract Method
• dalam sebuah abstract class, bisa memiliki abstract method
• Kalau sudah diberi identitas abstract method, maka harus di override
oleh subclass nya.
• subclass harus meng-implement (override) semua abstract method
• Abstract Method harus berada di dalam abstract class.
[email protected]
public abstract class Hewan {
abstract void setName();
abstract void setMakanan();
}
[email protected]
Class Object Java
• Setiap class di Java pasti extend ke
Class Object.
• Class yang secara eksplisit tidak
melakukan extend ke class object,
makan akan dilakukan extend secara
implisit (tidak tertulis)
• class object memiliki method equals,
getClass, hashCode, toString.
• Semua class di java pasti juga
memiliki method tsb di atas (dari
konsep inheritance)
[email protected]
Kasus - Dog Class
• Class Canine sesuai dengan spesifikasi.
• Class Animal sesuai dengan spesifikasi.
• Class Object juga sesuai dengan spesifikasi.
• Bagaimana jika kita ingin menggunakan class dog dalam sebuah
aplikasi hewan peliharaan (pet).
[email protected]
Pillihan ke-1
• semua method pet masukkan ke
animal
• semua subclass otomatis akan
inherit pet behavior
• apakah Lion termasuk pet ?
• Cat and dog bisa memiliki
implementasi pet yang berbeda
[email protected]
Pilihan ke-2
• sama dengan pilihan 1,
kemudian semua method pet
dimasukkan sebagai method
abstract, sehingga memaksa
semua subclass melakukan
override methode pet.
• semua animal jadi pet, logiskah ?
[email protected]
Pilihan ke-3
• letakkan method pet hanya pada
class yang bisa menjadi pet.
• Tidak ada kontrak, bisa jadi
penamaan method tidak sama,
nilai return type juga bisa berbeda
• tidak bisa memanfaatkan fitur
polymorphism
[email protected]
• jadi yang sebenarnya diperlukan adalah,
• pet behavior hanya ada di class yang masuk dalam golongan pet,
• ada kontrak yang menjamin kesamaan nama method
• dan bisa menerapkan konsep polymorphism
• Pakai 2 superclass ??
• Multiple inheritence, --> bad thing
• Dilarang
[email protected]
[email protected]
Multiple inheritence, --> bad thing
[email protected]
Interface
• interface, sama dengan abstract
class.
• semua method dalam inteface
adalah abstract method, jadi
harus diimplementasikan dalam
di subclassnya.
[email protected]
[email protected]
• class dari inheritance yang berbeda bisa mengimplement interface yang
sama.
• Class bisa implement multiple interface (namun tidak boleh multiple
inheritance)
[email protected]
menentukan Class, subclass, abstract
class, dan interface
• Buat class (biasa) jika class tersebut tidak extend dari class lain, atau jika
class lain tidak memenuhi konsep 'IS-A'
• Buat subclass jika dari class yang sudah dibuat, perlu ada class lagi yang lebih
spesifik dan harus melakukan override atau menambahkan behavior baru.
• Gunakan class abstract jika ingin mendefinisikan template untuk kumpulan
subclass.
• Gunakan class abstract jika kita ingin memastikan bahwa tidak ada object yang bisa di
buat dari sebuah class.
• Gunakan interface jika kita ingin mendefinisikan role / peran baru (dengan
behavior baru) yang bisa diimplement oleh class lain, dengan tidak
memperhatikan keberadaan class tersebut dalam inheritance tree.
[email protected]
super
• digunakan untuk memanggil
method miliki superclass nya.
[email protected]
Latihan
• buat tulisan singkat apa yang dimaksud dengan
• abstract class
• concrete Class
• interface
• jelaskan dan berikan contoh kasus class kapan kita harus membuat
abstract class, concrete class, dan interface
[email protected]
Referensi
• “Head First Java”, Kathy Sierra & Bert Bates, O'Reilly, Chapter 2