Study
Dart

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.

Editor Latihan

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.