Menu
CoddyTech

Konstruktor Default

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 10 dari 110.

Jika kamu tidak mendefinisikan constructor apa pun di dalam class, Dart secara otomatis menyediakan constructor default. Constructor ini tidak memiliki parameter dan hanya membuat instance dari class.

class Book {
  String title = 'Unknown';
  int pages = 0;
}

// Dart menyediakan konstruktor bawaan: Book()
Book myBook = Book();
print(myBook.title); // Unknown

Constructor default tidak terlihat dalam kodemu, tetapi tetap ada. Constructor ini tidak menerima argumen dan menginisialisasi object dengan nilai default apa pun yang telah kamu tetapkan untuk variabel instance.

Setelah kamu mendefinisikan constructor sendiri, constructor default tidak lagi disediakan secara otomatis. Jika kamu masih menginginkan constructor tanpa argumen di samping constructor berparameter, kamu harus membuatnya secara eksplisit:

class Book {
  String title;
  int pages;

  // Konstruktor default yang didefinisikan secara eksplisit
  Book() : title = 'Unknown', pages = 0;

  // Konstruktor dengan parameter
  Book.withDetails(this.title, this.pages);
}

Book book1 = Book();                      // Menggunakan konstruktor default
Book book2 = Book.withDetails('Dart', 300); // Menggunakan konstruktor dengan parameter

Konstruktor default eksplisit menggunakan daftar inisialisasi (bagian setelah titik dua) untuk menetapkan nilai awal. Pola ini berguna saat kamu ingin menawarkan beberapa cara untuk membuat object dari class yang sama.

challenge icon

Tantangan

Mudah

Mari buat sistem inventaris produk sederhana yang menunjukkan constructor default implisit dan eksplisit.

Kamu akan membuat dua file untuk mengatur kodemu:

  • product.dart: Definisikan class Product yang menawarkan dua cara untuk membuat produk:
    • Constructor default eksplisit Product() yang menginisialisasi name dengan 'Unnamed' dan price dengan 0.0 menggunakan initializer list
    • Constructor bernama Product.withDetails yang menerima parameter name dan price
    • Method display() yang mencetak: Product: [name] - $[price]
  • main.dart: Impor class produkmu dan buat dua produk:
    • Satu menggunakan constructor default
    • Satu menggunakan constructor bernama dengan 'Laptop' dan 999.99
    Panggil display() pada setiap produk.

Class Product-mu harus memiliki dua variabel instance:

  • String name
  • double price

Format output yang diharapkan:

Product: Unnamed - $0.0
Product: Laptop - $999.99

Coba sendiri

import 'product.dart';

void main() {
  // TODO: Buat produk menggunakan konstruktor bawaan
  
  // TODO: Buat produk menggunakan konstruktor bernama dengan 'Laptop' dan 999.99
  
  // TODO: Panggil display() pada setiap produk
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online