Konstruktor Konstan
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 13 dari 110.
Constructor konstan membuat object konstan pada waktu kompilasi. Saat kamu membuat object dengan nilai yang sama menggunakan constructor const, Dart menggunakan kembali instance yang sama di memori sehingga meningkatkan performa.
Untuk membuat konstruktor konstan, tambahkan kata kunci const sebelum nama konstruktor, dan pastikan semua variabel instance adalah final:
class Color {
final int red;
final int green;
final int blue;
const Color(this.red, this.green, this.blue);
}
const white = Color(255, 255, 255);
const alsoWhite = Color(255, 255, 255);
print(identical(white, alsoWhite)); // truewhite dan alsoWhite sama-sama menunjuk ke object yang persis sama di memori karena keduanya dibuat dengan nilai identik menggunakan konstruktor konstan.
Kamu juga bisa menggunakan constructor const tanpa kata kunci const, yang membuat instance biasa (nonkonstan):
var red = Color(255, 0, 0); // Instans biasa
const blue = Color(0, 0, 255); // Instans konstanKonstruktor const umum digunakan untuk object konfigurasi yang tidak dapat diubah, nilai yang telah ditentukan seperti warna atau ukuran, dan di mana pun kamu ingin memastikan object tidak dapat diubah sekaligus mengoptimalkan penggunaan memori.
Tantangan
MudahMari kita buat sistem konfigurasi untuk game sederhana yang menggunakan konstruktor const untuk menentukan pengaturan yang tidak dapat diubah dan dapat digunakan kembali.
Kamu akan membuat dua file untuk mengatur kodemu:
difficulty.dart: Tentukan classDifficultyyang mewakili pengaturan tingkat kesulitan game. Class-mu harus memiliki:- Tiga field
final:name(String),enemyCount(int), danplayerLives(int) - Konstruktor const yang menginisialisasi ketiga field
- Method
display()yang mencetak informasi tingkat kesulitan
- Tiga field
main.dart: Impor class tingkat kesulitanmu dan buat tiga preset tingkat kesulitan const:easydengan nama'Easy',5musuh, dan5nyawamediumdengan nama'Medium',10musuh, dan3nyawaharddengan nama'Hard',20musuh, dan1nyawa
const. Lalu panggildisplay()pada setiap preset sesuai urutan di atas. Terakhir, periksa apakah dua objectconst Difficulty('Easy', 5, 5)identik menggunakanidentical()dan cetak hasilnya.
Method display() harus mencetak dengan format persis seperti ini:
[name]: [enemyCount] enemies, [playerLives] livesOutput yang diharapkan:
Easy: 5 enemies, 5 lives
Medium: 10 enemies, 3 lives
Hard: 20 enemies, 1 lives
trueCoba sendiri
import 'difficulty.dart';
void main() {
// TODO: Buat tiga preset tingkat kesulitan konstan menggunakan kata kunci const:
// - easy: nama 'Easy', 5 enemies, 5 lives
// - medium: nama 'Medium', 10 enemies, 3 lives
// - hard: nama 'Hard', 20 musuh, 1 nyawa
// TODO: Panggil display() pada setiap tingkat kesulitan secara berurutan: easy, medium, hard
// TODO: Periksa apakah dua object const Difficulty('Easy', 5, 5) identik
// menggunakan identical() dan cetak hasilnya
}
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