Override toString()
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 70 dari 110.
Saat kamu mencetak object di Dart, kamu mungkin melihat sesuatu seperti Instance of 'Person' - tidak terlalu membantu. Ini terjadi karena setiap class mewarisi method toString() bawaan dari Object yang hanya mengembalikan nama class.
Dengan melakukan override pada toString(), kamu bisa memberikan representasi string yang bermakna untuk object-mu:
class Person {
String name;
int age;
Person(this.name, this.age);
@override
String toString() {
return 'Person(name: $name, age: $age)';
}
}
void main() {
var person = Person('Alice', 30);
print(person); // Person(name: Alice, age: 30)
}Tanpa override, print(person) akan menghasilkan output Instance of 'Person'. Dengan override, kamu mendapatkan informasi berguna tentang keadaan object tersebut.
Method toString() dipanggil secara otomatis setiap kali Dart perlu mengonversi object-mu menjadi string, dalam pernyataan print(), interpolasi string, atau saat menggabungkannya dengan string lain:
var message = 'User: $person'; // toString() dipanggil secara otomatis
print('Found: ' + person.toString()); // Pemanggilan secara eksplisittoString() yang diimplementasikan dengan baik akan memudahkan proses debug karena kamu bisa memeriksa nilai object dengan cepat selama pengembangan.
Tantangan
MudahMari kita buat sistem katalog produk yang menampilkan informasi setiap produk dalam format yang rapi dan mudah dibaca saat dicetak. Kamu akan berlatih menimpa method toString() agar object-mu lebih mudah di-debug dan lebih ramah pengguna.
Kamu akan menyusun kodemu ke dalam dua file:
product.dart: Buat classProductyang mewakili suatu barang di toko. Produkmu harus memilikiname(String),price(double), danquantity(int). Timpa methodtoString()agar mengembalikan string berformat persis seperti ini:Product(name: [name], price: $[price], qty: [quantity])main.dart: Impor file produkmu dan tunjukkan bagaimana overridetoString()membuat pencetakan object jauh lebih berguna. Buat tiga produk dan cetak untuk melihat representasi string kustommu:- Produk bernama
'Laptop'dengan harga999.99dan jumlah5 - Produk bernama
'Mouse'dengan harga29.5dan jumlah50 - Produk bernama
'Keyboard'dengan harga75.0dan jumlah30
Featured: [product]menggunakan produk Laptop.- Produk bernama
Perhatikan bagaimana mencetak setiap produk secara langsung menampilkan informasi yang bermakna, bukan pesan yang tidak membantu, Instance of 'Product'. Method toString()-mu dipanggil secara otomatis, baik dalam pernyataan print() maupun saat menggunakan interpolasi string.
Output yang diharapkan:
Product(name: Laptop, price: $999.99, qty: 5)
Product(name: Mouse, price: $29.5, qty: 50)
Product(name: Keyboard, price: $75.0, qty: 30)
Featured: Product(name: Laptop, price: $999.99, qty: 5)Coba sendiri
import 'product.dart';
void main() {
// TODO: Buat tiga instance Product:
// 1. Laptop, harga: 999.99, jumlah: 5
// 2. Mouse, harga: 29.5, jumlah: 50
// 3. Keyboard, harga: 75.0, jumlah: 30
// TODO: Cetak setiap produk (toString() akan dipanggil secara otomatis)
// TODO: Cetak pesan unggulan menggunakan interpolasi string
// Format: Featured: [produk laptop]
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan11Metode Khusus
Override toString()Override hashCode & ==Antarmuka Comparablecall() methodOverride noSuchMethodRingkasan: Koleksi Kustom3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online