Abstract Class & Interface
Abstract Class
● Kelas yang tidak dapat diinstansiasi langsung.
● Jika sebuah kelas punya minimal satu method abstract, maka kelas tersebut harus
dideklarasikan abstract.
● Subclass wajib meng-override method abstract dari superclass.
● Abstract class tidak bisa diinstansiasi langsung, tapi bisa lewat objek subclass.
● Digunakan sebagai blueprint untuk subclass.
● Bisa memiliki:
○ Abstract method → tanpa isi, harus diimplementasikan subclass.
○ Concrete method → punya implementasi.
○ Field & constructor.
Interface
Kumpulan kontrak (perilaku) yang harus diimplementasikan oleh kelas.
Sejak Java 8 bisa berisi:
● Abstract method (wajib diimplementasi).
● Default method (punya implementasi).
● Static method.
● Constant (public static final).
Abstract Class vs Interface
Contoh
Main methodsnya
buat sendiri ya..
Contoh Interface
Kombinasi Abstract Class + Interface
sistem E-Commerce dengan
skenario berikut:
● Ada abstract class User
(memiliki method abstract
displayInfo()).
● Ada interface Payment
(method pay(double
amount)).
● Buat dua subclass
Customer dan Admin, di
mana Customer
mengimplementasikan
Payment.
Keterangan
● Abstract Class User → hanya mendefinisikan displayInfo() sebagai kontrak dasar.
● Interface Payment → mendefinisikan perilaku pay().
● Class Customer → mewarisi User dan mengimplementasi Payment.
● Class Admin → hanya mewarisi User, tidak perlu implementasi Payment.
Main class:
● Membuat objek Customer dan Admin.
● Menunjukkan polymorphism dengan User dan Payment.
Output Program
Kapan Menggunakan?
Abstract Class → gunakan jika ada hubungan "is-a" dan ingin berbagi
kode/atribut.
Interface → gunakan jika hanya butuh kontrak perilaku, tanpa peduli pewarisan.
Gabungan → gunakan keduanya bila perlu: abstract class sebagai kerangka
dasar, interface sebagai kontrak perilaku tambahan.
Latihan
1. Buat abstract class Shape dengan method getArea().
2. Buat subclass Circle dan Rectangle.
3. Buat interface Drawable dengan method draw().
4. Implementasikan Drawable di Circle dan Rectangle.
5. Buat Main untuk menampilkan luas dan menggambar setiap shape.