Wie wäre es mit dem Fall, dass Sie mehr als einen Konstruktor haben möchten? Zum Beispiel gibt es 2 Konstruktoren, die Sie verwenden möchten:
Customer(String name, int age, String location) {
this.name = name;
this.age = age;
this.location = location;
}
Customer(this.name, this.age) {
this.name = name;
this.age = age;
}
Wenn Sie jedoch beide in einer Klasse definieren, tritt ein Compilerfehler auf.
Dart bietet einen benannten Konstruktor, mit dem Sie mehrere Konstruktoren klarer implementieren können:
class Customer {
Customer(String name, int age, String location) {
this.name = name;
this.age = age;
this.location = location;
}
Customer.withoutLocation(this.name, this.age) {
this.name = name;
this.age = age;
}
Customer.empty() {
name = "";
age = 0;
location = "";
}
@override
String toString() {
return "Customer [name=${this.name},age=${this.age},location=${this.location}]";
}
}
Mit Syntactic Sugar können Sie es einfacher schreiben:
Customer(this.name, this.age, this.location);
Customer.withoutLocation(this.name, this.age);
Customer.empty() {
name = "";
age = 0;
location = "";
}
Jetzt können wir Customer
mit diesen Methoden ein neues Objekt erstellen .
var customer = Customer("bezkoder", 26, "US");
print(customer);
var customer1 = Customer.withoutLocation("zkoder", 26);
print(customer1);
var customer2 = Customer.empty();
print(customer2);
Gibt es eine Möglichkeit, Customer.empty()
ordentlich zu machen ? Und wie initialisiere ich einen leeren Wert für das Standortfeld, wenn ich Customer.withoutLocation()
anstelle von null
anrufe?
Von: Mehrere Konstruktoren
color
undname
, nichtgetColor()
undgetName()
Methoden verwenden. Wenn sich die Werte nie ändern, können Sie ein einzelnes öffentliches Feld wie verwendenclass Player { final String name; final int color; Player(this.name, this.color); }
.