2013-12-15 16 views
5

w DART, mam następujący kod:Błąd: konstruktor domyślny jest już zdefiniowana

class FirstClass { 
    FirstClass(a) { 

    } 
} 

class SecondClass extends FirstClass { 

} 

Powoduje to i błąd na SecondClass ponieważ FirstClass nie posiada konstruktora domyślnego.

Jednak kiedy próbuję dodać.

class FirstClass { 
    FirstClass(a) { 

    } 

    FirstClass() { 

    } 
} 

błędy to dlatego konstruktor domyślny jest już zdefiniowana w FirstClass.

Jedyny sposób, w jaki mogę sprawić, że to działa, a nie błąd, to to, że nadklasa nie implementuje żadnych konstruktorów w ogóle. Co ja robię źle?

Odpowiedz

5

W rzutce nie można używać tej samej nazwy metody/konstruktora, która była używana kilka razy (nawet przy różnych parametrach).

W twoim przypadku można użyć nazwie konstruktor zdefiniować 2 konstruktory:

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

lub zdefiniować a jako opcjonalny i zachować tylko jeden konstruktor:

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

A powód jest Dart jest nie statycznie wpisane, a zatem nie mogą używać typów parametrów do rozróżniania/przeciążania tej samej metody/nazwy konstruktora. – lcn

Powiązane problemy