2015-08-04 41 views
11

Qual è la differenza tra chiamare super e chiamare super()? Qual è il migliore se gli argomenti passati al metodo figlio non corrispondono a ciò che il genitore si aspetta.differenza tra chiamare super e chiamare super()

+0

Che dire della terza possibilità: 'super ('cat', 'cane', 'maiale')'? –

risposta

18

Quando si chiama super senza argomenti, Ruby invia un messaggio al genitore dell'oggetto corrente, chiedendo di richiamare un metodo con lo stesso nome di dove si chiamava super da, insieme con gli argomenti passati a quello metodo.

D'altra parte, quando viene chiamato con super(), non invia argomenti al genitore.

Se gli argomenti non corrispondono a ciò che il genitore si aspetta, direi che si desidera utilizzare super() o elencare esplicitamente i parametri nella chiamata funzionale in modo che corrispondano a un costruttore genitore valido.

11

dettami argomenti che vengono inviati a monte della catena oggetto antenato

super - sends all arguments 
super() - no arguments 
+0

Questo è più semplice! – kamal

Problemi correlati