Standardkonstruktor
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 10 von 110.
Wenn Sie keinen Konstruktor in einer Klasse definieren, stellt Dart automatisch einen Standardkonstruktor bereit. Dies ist ein Konstruktor ohne Parameter, der einfach eine Instanz der Klasse erstellt.
class Book {
String title = 'Unknown';
int pages = 0;
}
// Dart stellt einen Standard-Konstruktor bereit: Book()
Book myBook = Book();
print(myBook.title); // UnknownDer Standardkonstruktor ist in Ihrem Code unsichtbar, aber er existiert. Er nimmt keine Argumente entgegen und initialisiert das Objekt mit den Standardwerten, die Sie den Instanzvariablen zugewiesen haben.
Sobald Sie Ihren eigenen Konstruktor definieren, wird der Standardkonstruktor nicht mehr automatisch bereitgestellt. Wenn Sie weiterhin einen argumentlosen Konstruktor neben einem parametrisierten wünschen, müssen Sie diesen explizit erstellen:
class Book {
String title;
int pages;
// Expliziter Standardkonstruktor
Book() : title = 'Unknown', pages = 0;
// Parametrisierter Konstruktor
Book.withDetails(this.title, this.pages);
}
Book book1 = Book(); // Verwendet Standard
Book book2 = Book.withDetails('Dart', 300); // Verwendet parametrisiertenDer explizite Standardkonstruktor verwendet eine Initialisierungsliste (der Teil nach dem Doppelpunkt), um Initialwerte festzulegen. Dieses Muster ist nützlich, wenn Sie mehrere Möglichkeiten anbieten möchten, Objekte aus derselben Klasse zu erstellen.
Aufgabe
EinfachLassen Sie uns ein einfaches Produktinventarsystem erstellen, das sowohl implizite als auch explizite Standardkonstruktoren demonstriert.
Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:
product.dart: Definieren Sie eine KlasseProduct, die zwei Möglichkeiten bietet, Produkte zu erstellen:- Einen expliziten Standardkonstruktor
Product(), dernameauf'Unnamed'undpriceauf0.0unter Verwendung einer Initialisierungsliste initialisiert - Einen benannten Konstruktor
Product.withDetails, der die Parameternameundpriceakzeptiert - Eine Methode
display(), die Folgendes ausgibt:Product: [name] - $[price]
- Einen expliziten Standardkonstruktor
main.dart: Importieren Sie Ihre Produktklasse und erstellen Sie zwei Produkte:- Eines unter Verwendung des Standardkonstruktors
- Eines unter Verwendung des benannten Konstruktors mit
'Laptop'und999.99
display()für jedes Produkt auf.
Ihre Klasse Product sollte zwei Instanzvariablen haben:
String namedouble price
Erwartetes Ausgabeformat:
Product: Unnamed - $0.0
Product: Laptop - $999.99Probier es selbst
import 'product.dart';
void main() {
// TODO: Erstelle ein Produkt mit dem Standard-Konstruktor
// TODO: Erstelle ein Produkt mit dem benannten Konstruktor mit 'Laptop' und 999.99
// TODO: Rufe display() für jedes Produkt auf
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienBibliotheken & ImportsEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenInstanzvariablenGrundlagen von KonstruktorenRückblick – Einfacher Taschenrechner4Null-Sicherheit
Einführung in die Null-SicherheitNullable vs. Non-NullableDie Operatoren ? und !Late-Schlüsselwort und Null-SicherheitNull-bewusste OperatorenNull-Sicherheit in KlassenRückblick – Benutzers профilsystem7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrere InterfacesZusammenfassung – Formrechner10Collections & Generics
Übersicht über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische EinschränkungenIterable & IteratorRückblick – Generischer Speicher13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungErweiterungsmethodenAufrufbare KlassenVersiegelte Klassen (Dart 3)Records (Dart 3)Muster & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
StandardkonstruktorBenannte KonstruktorenInitialisierungslistenKonstantenkonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenRückblick – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _-Präfix-KonventionBibliotheksweite SichtbarkeitTiefergehende Getter & SetterInformationsverbergungRückblick – Studierendendaten8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas Schlüsselwort „on“ in MixinsMixin vs. VererbungMixin vs. SchnittstelleRückblick – Tiersystem11Spezielle Methoden
toString()-ÜberschreibunghashCode- & ==-ÜberschreibungComparable-Schnittstellecall()-MethodenoSuchMethod-ÜberschreibungWiederholung – Benutzerdefinierte Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFabrikmusterBeobachtermusterStrategiemuster17Abschließende Herausforderungen
E-Learning-PlattformBankingsystemSpielcharaktersystemFahrzeugvermietung3Klassen-Eigenschaften
Instanz- vs. statische MemberFinal- und Const-FelderLate-VariablenStatische Methoden und FelderGetter und SetterRückblick – Bankkontoverwaltung6Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungDie Annotation @overrideDas Schlüsselwort final für KlassenKonstruktoren und VererbungZusammenfassung – Mitarbeiterhierarchie9Polymorphismus
Grundlagen des PolymorphismusPolymorphismus über InterfacesLaufzeit-TypüberprüfungDie Operatoren is & asCovariant-SchlüsselwortZusammenfassung – ZahlungsprozessorÜbe selbstständig: Online-Dart-Compiler