Come impedire che un metodo venga sovrascritto in una classe derivata?Impedire la sovrascrittura di un metodo in C#
In Java, è possibile farlo utilizzando il modificatore final
sul metodo che si desidera evitare di sovrascrivere.
Come ottengo lo stesso risultato in C#?
Sono a conoscenza dell'uso di sealed
ma a quanto pare posso usarlo solo con la parola chiave override
?
class A
{
public void methodA()
{
// Code.
}
public virtual void methodB()
{
// Code.
}
}
class B : A
{
sealed override public void methodB()
{
// Code.
}
}
Così, nell'esempio di cui sopra mi può impedire il methodB()
venga sacrificata per tutte le classi che derivano dalla classe B
, ma come faccio a prevenire classe B
di ignorare il methodB()
in primo luogo?
Aggiornamento: ho perso la parola chiave virtual
nella dichiarazione methodB()
sulla classe A quando ho postato questa domanda. Corretto
È una nuova funzionalità in C# 4 per sigillare un metodo? –
Se non si sta già eseguendo l'override del metodo, allora non decorarlo con 'virtual', quindi qualsiasi altra cosa non verrà considerata per il binding del metodo sul proprio tipo. –
Credo che i tuoi metodi in classe A dovrebbero essere "virtuali" se stai pianificando di sovrascriverli. – CAbbott