2013-12-15 16 views
5

In Dart, ho il seguente codice:Errore: costruttore di default è già definita

class FirstClass { 
    FirstClass(a) { 

    } 
} 

class SecondClass extends FirstClass { 

} 

Questo fa sì ed errori sul SecondClass perché il FirstClass non ha un costruttore di default.

Tuttavia quando provo ad aggiungerne uno.

class FirstClass { 
    FirstClass(a) { 

    } 

    FirstClass() { 

    } 
} 

errori perché il costruttore di default è già definita in FirstClass.

L'unico modo in cui posso sembrare che funzioni e non errore è se la superclasse non implementa alcun costrutto. Che cosa sto facendo di sbagliato?

risposta

5

Nel dardo non è possibile utilizzare lo stesso metodo/nome del costruttore utilizzato più volte (anche con parametri diversi).

Nel tuo caso è possibile utilizzare il costruttore di nome di definire 2 costruttori:

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

o definire a come optional e mantenere un solo costruttore:

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

E la ragione è Dart non è disponibile in modo statico digitato e quindi non può utilizzare i tipi di parametro per differenziare/sovraccaricare lo stesso metodo/nome del costruttore. – lcn

Problemi correlati