2013-12-15 14 views
5

In Dart definiert ist, habe ich den folgenden Code:Fehler: Standardkonstruktors bereits

class FirstClass { 
    FirstClass(a) { 

    } 
} 

class SecondClass extends FirstClass { 

} 

Dies verursacht und Fehler auf SecondClass weil die FirstClass keinen Default-Konstruktor haben.

Allerdings wenn ich versuche, einen hinzuzufügen.

class FirstClass { 
    FirstClass(a) { 

    } 

    FirstClass() { 

    } 
} 

Es Fehler, da der Standard-Konstruktor bereits in FirstClass definiert ist.

Der einzige Weg, wie ich das zum Funktionieren bringen kann, ist kein Fehler, wenn die Oberklasse überhaupt keine Konstruktoren implementiert. Was mache ich falsch?

Antwort

5

Im Dart-Modus kann der gleiche Name der Methode/des Konstruktors nicht mehrmals verwendet werden (auch nicht mit anderen Parametern).

In Ihrem Fall können Sie entweder namens Konstruktor verwenden, um 2 Konstrukteurs zu definieren:

class FirstClass { 
    FirstClass() {} 
    FirstClass.withA(a) {} 
} 

oder definieren a als optional und halten nur einen Konstruktor:

class FirstClass { 
    FirstClass([a]) {} 
} 
+0

Und der Grund ist Dart ist nicht statisch typisiert und kann daher keine Parametertypen verwenden, um denselben Methoden-/Konstruktornamen zu unterscheiden/zu überladen. – lcn

Verwandte Themen