1. Pewarisan (Inheritance: extends & super)
Pewarisan memungkinkan sebuah Subclass mewarisi properti dan method dari Superclass induknya:
class PerangkatJaringan {
String merk;
String model;
PerangkatJaringan(this.merk, this.model);
void reboot() {
print("Mereset perangkat $merk $model...");
}
}
// Subclass Router mewarisi PerangkatJaringan
class Router extends PerangkatJaringan {
int jumlahPort;
Router(String merk, String model, this.jumlahPort) : super(merk, model);
@override
void reboot() {
print("Menyimpan tabel routing sebelum reboot...");
super.reboot(); // Memanggil method induk
}
}
2. Abstract Class & Implicit Interfaces (implements)
Setiap class di Dart secara implisit mendefinisikan sebuah Interface. Sebuah class dapat mengimplementasikan banyak interface sekaligus:
abstract class ProtokolKeamanan {
void enkripsiData(String data);
String dekripsiData(String hash);
}
class TLSProtokol implements ProtokolKeamanan {
@override
void enkripsiData(String data) {
print("Mengenkripsi data dengan TLS 1.3...");
}
@override
String dekripsiData(String hash) {
return "Data Plaintext Terverifikasi";
}
}
3. Mixin (Komposisi Logika Reusable dengan keyword 'with')
Mixin adalah cara untuk mendefinisikan kode dan fungsi yang dapat digunakan kembali oleh banyak kelas tanpa perlu membuat hierarki pewarisan bertingkat yang kaku:
mixin LoggerMixin {
void logInfo(String pesan) {
print("[LOG - ${DateTime.now()}]: $pesan");
}
}
mixin ValidasiInputMixin {
bool isValidEmail(String email) => email.contains('@');
}
// Menggabungkan Mixin ke dalam Class
class UserService with LoggerMixin, ValidasiInputMixin {
void daftarkanUser(String email) {
if (isValidEmail(email)) {
logInfo("User $email berhasil didaftarkan.");
} else {
logInfo("Pendaftaran gagal: Format email salah!");
}
}
}