I metodi IMO, virtual
, nella classe base, hanno un'implementazione molto semplice. Anche se abbiamo override
la definizione del metodo virtual
nella classe figlio, possiamo ancora chiamare il metodo virtual
(con implementazione di base) mentre ha senso e non influenza il comportamento previsto del metodo overridden
nel classe di bambino.
Ad esempio,
BaseCalculator fa il vero lavoro. Il calcolatore sta decorando la libreria BaseCalculator estendendola.
public class BaseCalculator
{
public virtual T Add<T>(T number01, T number02)
{
return number01 + number02;
}
}
public class Calculator: BaseCalculator
{
public override T Add<T>(T number01, T number02)
{
Console.WriteLine(number01 + " | " + number02);
var result = base.Add<int>(1, 3);
Console.WriteLine("Result: "+ result);
return result;
}
}
D: Cosa succede se un metodo sottoposto a override chiama solo la classe base?
A: Nel tuo caso, avendo il metodo della classe base come virtual
, non abbiamo bisogno di override
fino a quando non vogliamo cambiare il suo comportamento.
D: Questo è dannoso / buono?
A: Sì, potrebbe avere un design errato poiché potrebbe ingombrare il file del codice sorgente mentre aggiungiamo sostituzioni non necessarie.
Q: Sembra strano, perché sostituire un metodo solo per chiamare la base comunque?
A: BaseCalculator fa il vero lavoro. Il calcolatore sta decorando la libreria BaseCalculator estendendola.
Spero, aiuta!