Podstawy konstruktorów
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 8 z 110.
Konstruktor to specjalna metoda, która uruchamia się automatycznie, gdy tworzysz nowy obiekt. Inicjalizuje zmienne instancji obiektu w chwili jego utworzenia.
Oto przykład klasy z konstruktorem:
class Dog {
String name;
String breed;
Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
}Konstruktor ma taką samą nazwę jak klasa. Parametry są przekazywane podczas tworzenia obiektu.
Twórz obiekty, przekazując argumenty do konstruktora:
Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');Uzyskaj dostęp do zmiennych ustawionych przez konstruktor:
print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);Wynik:
Rex
German Shepherd
Buddy
Golden RetrieverDart oferuje również skróconą składnię konstruktora, która wykorzystuje bezpośrednio this.variableName na liście parametrów:
class Dog {
String name;
String breed;
// Skrócony zapis: automatycznie przypisuje parametry do zmiennych instancji
Dog(this.name, this.breed);
}Obie wersje dają ten sam rezultat. Skrócona składnia to popularna funkcja języka Dart, która eliminuje konieczność ręcznego wpisywania this.name = name.
Możesz również dodać domyślne wartości parametrów:
class Cat {
String name;
int age;
Cat(this.name, [this.age = 1]); // age domyślnie wynosi 1
}
Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age domyślnie wynosi 1
print('${fluffy.name} is ${fluffy.age}'); // Fluffy ma 3 lata
print('${whiskers.name} is ${whiskers.age}'); // Whiskers ma 1 rokNajważniejsze: konstruktory zapewniają, że każdy obiekt jest prawidłowo inicjalizowany danymi w chwili utworzenia, dzięki czemu nie musisz później ręcznie ustawiać zmiennych.
Wyzwanie
ŁatwyOtrzymujesz pliki PHP (book.dart i driver.dart), aby zaimplementować system obsługi książek.
Twoje zadania:
- Uzupełnij klasę
Bookw plikubook.dart, dodając konstruktor, który inicjalizujetitle,authoripages: użyj skróconej składni DartBook(this.title, this.author, this.pages); - W pliku
driver.dartutwórz obiektBookdla'Harry Potter', którego autorem jest'J.K. Rowling', i ustaw liczbę stron na400
Postępuj zgodnie z komentarzami TODO w każdym pliku.
Spróbuj swoich sił
import 'book.dart';
void main() {
// TODO: Utwórz obiekt Book z następującymi danymi:
// title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
Book myBook = ?;
print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online