Kelas dan Metode Abstrak TypeScript

Dalam TypeScript, abstract class ​​adalah jenis kelas khusus yang tidak dapat langsung dibuat. Kelas ini berfungsi sebagai cetak biru untuk kelas lainnya. Kelas abstrak digunakan untuk menentukan perilaku umum yang dapat digunakan bersama oleh beberapa subkelas, sekaligus memungkinkan subkelas tersebut menyediakan implementasi tertentu.

Mendefinisikan Kelas Abstrak dalam TypeScript

Kelas abstrak dideklarasikan dengan kata kunci abstract. Kelas abstrak dapat berisi metode abstrak, yang tidak memiliki implementasi dan harus diimplementasikan oleh subkelas, dan metode reguler, yang memiliki implementasi. Berikut ini adalah contoh kelas abstrak:

abstract class Animal {
  abstract makeSound(): void; // Abstract method, no implementation

  move(): void {
    console.log("Moving...");
  }
}

Memahami Metode Abstrak

Metode abstrak adalah metode yang dideklarasikan dalam kelas abstrak yang tidak memiliki implementasi di kelas dasar. Metode ini harus diimplementasikan di setiap subkelas yang mewarisi dari kelas abstrak. Metode abstrak memastikan bahwa setiap subkelas menyediakan perilaku spesifiknya sendiri untuk metode tersebut. Berikut ini adalah contohnya:

class Dog extends Animal {
  makeSound(): void {
    console.log("Woof! Woof!");
  }
}

const myDog = new Dog();
myDog.makeSound(); // Outputs: Woof! Woof!
myDog.move(); // Outputs: Moving...

Manfaat Menggunakan Kelas Abstrak

Kelas abstrak menawarkan beberapa keuntungan:

  • Kegunaan Ulang Kode: Metode dan properti umum dapat didefinisikan sekali dan dibagikan ke beberapa subkelas.
  • Enkapsulasi: Kelas abstrak dapat merangkum perilaku yang harus disembunyikan dari kode eksternal.
  • Polimorfisme: Kelas abstrak memungkinkan perilaku polimorfik, yang memungkinkan satu fungsi menangani berbagai jenis objek.

Kapan Menggunakan Kelas Abstrak?

Kelas abstrak ideal jika ada kebutuhan untuk mendefinisikan antarmuka umum untuk sekelompok kelas terkait, tetapi tetap memberikan fleksibilitas dalam cara kelas-kelas ini mengimplementasikan antarmuka. Misalnya, dalam proyek yang melibatkan berbagai jenis hewan, kelas abstrak Hewan dapat digunakan untuk mendefinisikan struktur dan perilaku umum untuk semua hewan, sekaligus memungkinkan setiap kelas hewan tertentu untuk mengimplementasikan perilaku uniknya.

Kelas Abstrak vs. Antarmuka

Walaupun kelas abstrak dan antarmuka mendefinisikan kontrak yang harus diikuti oleh kelas lain, ada beberapa perbedaan utama:

  • Kelas Abstrak: Dapat memiliki metode abstrak dan metode konkret (metode dengan implementasi). Kelas ini lebih cocok untuk situasi di mana subkelas berbagi sejumlah besar kode.
  • Interfaces: Hanya mendeklarasikan tanda tangan metode dan tidak menyediakan implementasi apa pun. Interfaces ideal untuk mendefinisikan kontrak yang dapat diimplementasikan oleh beberapa kelas dengan caranya sendiri.

Kesimpulan

Kelas dan metode abstrak TypeScript menyediakan mekanisme yang kuat untuk mendefinisikan perilaku bersama sekaligus memungkinkan fleksibilitas dalam implementasi. Dengan menggunakan kelas abstrak, pengembang dapat membuat basis kode yang kuat dan dapat dipelihara yang mendukung penggunaan kembali kode, enkapsulasi, dan polimorfisme. Mengetahui kapan harus menggunakan kelas abstrak dibandingkan antarmuka sangat penting untuk membangun aplikasi yang dapat diskalakan dan terstruktur dengan baik.