Menu
Coddy logo textTech

Konstruktor domyślny

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 10 z 110.

Jeśli nie zdefiniujesz żadnego konstruktora w klasie, Dart automatycznie udostępni konstruktor domyślny. Jest to konstruktor bez parametrów, który po prostu tworzy instancję klasy.

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

// Dart udostępnia konstruktor domyślny: Book()
Book myBook = Book();
print(myBook.title); // Unknown

Konstruktor domyślny jest niewidoczny w Twoim kodzie, ale istnieje. Nie przyjmuje żadnych argumentów i inicjalizuje obiekt wartościami domyślnymi przypisanymi do zmiennych instancji.

Gdy zdefiniujesz własny konstruktor, domyślny konstruktor nie będzie już udostępniany automatycznie. Jeśli chcesz mieć konstruktor bez argumentów obok konstruktora sparametryzowanego, musisz utworzyć go jawnie:

class Book {
  String title;
  int pages;

  // Jawnie zdefiniowany konstruktor domyślny
  Book() : title = 'Unknown', pages = 0;

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

Book book1 = Book();                      // Używa konstruktora domyślnego
Book book2 = Book.withDetails('Dart', 300); // Używa konstruktora parametrycznego

Jawnie zdefiniowany konstruktor domyślny używa listy inicjalizacyjnej (części po dwukropku), aby ustawić wartości początkowe. Ten wzorzec jest przydatny, gdy chcesz oferować kilka sposobów tworzenia obiektów z tej samej klasy.

challenge icon

Wyzwanie

Łatwy

Zbudujmy prosty system ewidencji produktów, który demonstruje zarówno niejawne, jak i jawne konstruktory domyślne.

Utworzysz dwa pliki, aby uporządkować swój kod:

  • product.dart: Zdefiniuj klasę Product, która oferuje dwa sposoby tworzenia produktów:
    • Jawny konstruktor domyślny Product(), który inicjalizuje name wartością 'Unnamed' i price wartością 0.0 za pomocą listy inicjalizacyjnej
    • Konstruktor nazwany Product.withDetails, który przyjmuje parametry name i price
    • Metodę display(), która wyświetla: Product: [name] - $[price]
  • main.dart: Zaimportuj klasę produktu i utwórz dwa produkty:
    • Jeden przy użyciu konstruktora domyślnego
    • Jeden przy użyciu konstruktora nazwanego z wartościami 'Laptop' i 999.99
    Wywołaj display() dla każdego produktu.

Klasa Product powinna mieć dwie zmienne instancji:

  • String name
  • double price

Oczekiwany format wyjścia:

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

Spróbuj swoich sił

import 'product.dart';

void main() {
  // TODO: Utwórz produkt za pomocą konstruktora domyślnego
  
  // TODO: Utwórz produkt za pomocą konstruktora nazwanego, podając 'Laptop' i 999.99
  
  // TODO: Wywołaj display() dla każdego produktu
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online