Abstract Class & Interface di Dart
Penjelasan
Abstract class (ditandai keyword `abstract`) tidak bisa dibuat objeknya secara langsung — hanya bisa diturunkan (extends) oleh class lain, cocok untuk mendefinisikan "kontrak" method yang WAJIB diimplementasikan class turunannya. Dart TIDAK punya keyword `interface` terpisah — SETIAP class (abstract maupun biasa) otomatis bisa dipakai sebagai interface lewat keyword `implements`, dan class yang meng-implements WAJIB menyediakan implementasi SEMUA method (beda dari `extends` yang otomatis mewarisi implementasi).
Contoh Konsep
abstract class Bentuk {
double hitungLuas(); // method tanpa implementasi, WAJIB di-override
}
class Lingkaran implements Bentuk {
double jariJari;
Lingkaran(this.jariJari);
@override
double hitungLuas() => 3.14 * jariJari * jariJari;
}
void main() {
// var bentuk = Bentuk(); // Error! abstract class tidak bisa diinstansiasi
var lingkaran = Lingkaran(7);
print(lingkaran.hitungLuas());
}
Praktikum
Buat abstract class Kendaraan dengan method abstrak infoKendaraan(). Buat class Motor yang implements Kendaraan dan menyediakan implementasi infoKendaraan()-nya.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Beda `extends` vs `implements`: `extends` mewarisi IMPLEMENTASI (kode method induk otomatis ikut), sedangkan `implements` cuma mewarisi "KONTRAK" (nama & signature method) — class yang implements harus menulis ULANG semua method dari awal.