Initializer Lists
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 12 dari 110.
Daftar inisialisasi adalah kode yang muncul setelah titik dua dalam konstruktor, sebelum isi konstruktor. Kode ini dijalankan sebelum isi konstruktor dieksekusi dan digunakan untuk menginisialisasi variabel instance.
Kamu sudah melihat daftar inisialisasi di pelajaran sebelumnya:
Point.origin() : x = 0, y = 0;Bagian setelah titik dua (x = 0, y = 0) adalah daftar inisialisasi. Beberapa inisialisasi dipisahkan dengan koma.
Daftar inisialisasi penting saat bekerja dengan variabel final, yang harus diatur sebelum isi konstruktor dijalankan:
class Circle {
final double radius;
final double area;
Circle(double r)
: radius = r,
area = 3.14159 * r * r;
}
Circle c = Circle(5);
print(c.radius); // 5.0
print(c.area); // 78.53975Daftar inisialisasi juga dapat melakukan perhitungan atau transformasi pada parameter konstruktor sebelum menetapkan nilainya. Ini berguna saat kamu perlu mendapatkan nilai turunan atau memvalidasi data selama pembuatan object.
Kamu dapat menggabungkan sintaks singkat this. dengan daftar inisialisasi:
class Rectangle {
final double width;
final double height;
final double area;
Rectangle(this.width, this.height)
: area = width * height;
}
Rectangle rect = Rectangle(4, 5);
print(rect.area); // 20.0Di sini, width dan height ditetapkan melalui bentuk singkat, sedangkan area dihitung dalam daftar inisialisasi menggunakan nilai-nilai tersebut.
Tantangan
MudahMari buat kalkulator dimensi box yang menggunakan daftar inisialisasi untuk menghitung nilai turunan saat object dibuat.
Kamu akan mengatur kodemu dalam dua file:
box.dart: Definisikan classBoxyang merepresentasikan box 3D dengan dimensi dan property yang dihitung secara otomatis. Class-mu harus memiliki:- Tiga field
final double:length,width, danheight - Dua field
final doublehasil perhitungan:volumedansurfaceArea - Sebuah konstruktor yang menerima
length,width, danheightmenggunakan singkatanthis., serta menggunakan daftar inisialisasi untuk menghitungvolume(length × width × height) dansurfaceArea(2 × (length×width + width×height + height×length)) - Sebuah method
display()yang mencetak informasi box
- Tiga field
main.dart: Impor class box-mu dan buat dua box:- Box dengan dimensi
3.0,4.0,5.0 - Box dengan dimensi
2.0,2.0,2.0
display()pada setiap box sesuai urutan yang tercantum.- Box dengan dimensi
Method display() harus mencetak dengan format persis seperti ini:
Box: [length]x[width]x[height] | Volume: [volume] | Surface: [surfaceArea]Output yang diharapkan:
Box: 3.0x4.0x5.0 | Volume: 60.0 | Surface: 94.0
Box: 2.0x2.0x2.0 | Volume: 8.0 | Surface: 24.0Coba sendiri
import 'box.dart';
void main() {
// TODO: Buat kotak dengan dimensi 3.0, 4.0, 5.0
// TODO: Buat kotak dengan dimensi 2.0, 2.0, 2.0
// TODO: Panggil display() pada setiap kotak secara berurutan
}
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 Hewan3Property 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