Study
TypeScript

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.

Editor Latihan

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.