Encapsulation & Getter/Setter di Dart
Penjelasan
Dart TIDAK punya keyword private seperti Java/C# — sebagai gantinya, field/method yang namanya diawali underscore (_) otomatis private, tapi HANYA private di level FILE/LIBRARY, bukan di level class. Dart juga punya getter dan setter kustom (get/set) untuk menambah logika saat property diakses/diubah, mirip computed property di Swift/Kotlin.
Contoh Konsep
class Akun {
double _saldo = 0; // private, diawali underscore
double get saldo => _saldo; // getter
set saldo(double nilai) { // setter dengan validasi
if (nilai >= 0) {
_saldo = nilai;
}
}
}
void main() {
var akunku = Akun();
akunku.saldo = 50000; // seperti akses field biasa, padahal memanggil setter
print(akunku.saldo); // 50000.0
}
Praktikum
Buat class Siswa dengan field private _nama, disertai getter nama dan setter nama yang menolak nilai kosong. Buat object-nya, set nama dengan nama kamu, lalu tampilkan lewat getter.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Karena private di Dart cuma berlaku per-FILE (bukan per-class seperti bahasa lain), dua class yang didefinisikan di file .dart YANG SAMA bisa saling mengakses field private satu sama lain — tapi TIDAK bisa diakses dari file lain sama sekali, meski class turunannya sekalipun.