Interface pada Class & Abstract Class
Penjelasan
Sebuah class bisa dipaksa mengikuti "kontrak" tertentu lewat implements interface — class WAJIB mengimplementasikan semua properti/method yang didefinisikan interface itu, kalau tidak compiler akan error. abstract class mirip class biasa tapi tidak bisa di-instantiate langsung (hanya bisa di-extend), dan bisa punya abstract method yang WAJIB diimplementasikan subclass-nya.
Contoh Konsep
interface BisaBersuara {
bersuara(): string;
}
class Kucing implements BisaBersuara {
bersuara(): string {
return "Meong";
}
}
abstract class Hewan {
constructor(public nama: string) {}
abstract bersuara(): string; // wajib diimplementasikan subclass
perkenalan(): string {
return `Saya ${this.nama}, suara saya: ${this.bersuara()}`;
}
}
class Anjing extends Hewan {
bersuara(): string {
return "Guk";
}
}
const anjing1 = new Anjing("Rex");
console.log(anjing1.perkenalan());
Praktikum
Buat interface BisaMenghitungLuas dengan method luas(): number. Buat abstract class BentukDasar dengan constructor menerima public nama: string dan abstract method luas(): number, plus method info(): string yang memanggil luas(). Buat class Persegi extends BentukDasar implements BisaMenghitungLuas dengan properti sisi: number, lalu implementasikan luas()-nya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Beda utama interface dan abstract class: interface HANYA mendefinisikan bentuk/kontrak (tidak boleh punya implementasi method sama sekali), sedangkan abstract class BOLEH punya method dengan implementasi lengkap sekaligus method abstract yang wajib diisi subclass-nya.