In VB.NET è presente una parola chiave 'shadows'. Diciamo che ho una classe base chiamata 'Jedi' e una classe derivata chiamata 'Yoda' che eredita da 'Jedi'. Se dichiaro un metodo in 'Jedi' chiamato 'ForcePush' e l'ombra in 'Yoda', quindi quando si chiama il metodo su un'istanza della classe 'Yoda', ignorerà l'implementazione della classe base e utilizzerà l'implementazione della classe derivata . Tuttavia, se ho un'istanza di "Yoda" dichiarata inizialmente come tipo "Jedi", ovvero Dim j as Jedi = new Yoda()
, e chiamata il metodo "ForcePush" sull'istanza, verrà utilizzata l'implementazione Jedi.Shadowing events in .NET
Ora diciamo che ho un evento chiamato 'UsingForce' che viene generato quando viene chiamato il metodo 'ForcePush' e oscuro l'evento nella classe derivata (questo perché 'Yoda' ha un'interfaccia ' IForcePowers 'che dichiara questo evento) e ogni classe aumenta il rispettivo evento.
Se ho un'istanza di 'Yoda' che è dichiarata come tipo 'Jedi' (come sopra) e ho inserito un gestore di eventi nell'evento 'UsingForce' di 'Jedi', e quindi il metodo 'ForcePush' è chiamato nella classe 'Yoda', questo gestore di eventi sarà raggiunto?
Questa è una domanda fantastica. Userò l'esempio Jedi/Yoda la prossima volta che devo spiegare l'ereditarietà. – David
David: Sono d'accordo, è fantastico, così fantastico che mi ha distratto dalla domanda vera e ho finito per pensare a Star Wars per un po '. –
Scusate ragazzi, proverò a rendere le mie domande un po 'meno fantastiche la prossima volta! :) – link664