Dasar Dart: Class & Object
Membuat class sebagai cetakan, constructor dengan parameter bernama, getter, pewarisan (extends), dan @override.
Class = cetakan, object = hasil cetakan
Bayangkan cetakan kue. Class adalah cetakannya: menentukan bentuk dan isi. Object adalah kue yang dihasilkan. Dari satu class Produk kamu bisa membuat banyak object produk: kopi, teh, roti.
class Produk {
final String nama;
final int harga;
Produk({required this.nama, required this.harga});
String get hargaRupiah => 'Rp$harga';
void tampil() {
print('$nama - $hargaRupiah');
}
}
final p = Produk(nama: 'Kopi', harga: 15000);
p.tampil(); // Kopi - Rp15000
- Field (
nama,harga) adalah data milik object. - Constructor bernama sama dengan class. Penulisan
this.namaadalah jalan pintas: "isi fieldnamadengan argumen ini". Dengan{required ...}argumennya bernama dan wajib — sama seperti widget Flutter. - Getter (
get) adalah nilai yang dihitung, dipakai seperti field tanpa kurung:p.hargaRupiah. - Method (
tampil) adalah function milik object.
Pewarisan: extends
Class baru dapat mewarisi semua milik class lain lalu menambahkan hal baru. Ini adalah bentuk yang paling sering kamu temui di Flutter (class MyApp extends StatelessWidget).
class Minuman extends Produk {
final bool dingin;
Minuman({required super.nama, required super.harga, this.dingin = true});
@override
void tampil() {
super.tampil(); // jalankan versi milik Produk
print(dingin ? 'Dingin' : 'Panas');
}
}
extends Produk= Minuman adalah jenis khusus dari Produk.required super.nama= teruskan argumennamake constructor class induk.@override= "saya menimpa method milik induk dengan versi saya".super.tampil()= panggil dulu versi induk, baru tambahkan perilaku baru.