En VB.NET hay una palabra clave 'sombras'. Digamos que tengo una clase base llamada 'Jedi' y una clase derivada llamada 'Yoda' que hereda de 'Jedi'. Si declaro un método en 'Jedi' llamado 'ForcePush' y sombreo en 'Yoda', cuando invoque el método en una instancia de la clase 'Yoda', ignorará la implementación de la clase base y usará la implementación de la clase derivada ' . Sin embargo, si tengo una instancia de 'Yoda' que fue declarada originalmente como del tipo 'Jedi', es decir, Dim j as Jedi = new Yoda()
, y llamé al método 'ForcePush' en la instancia, utilizará la implementación de Jedi.Remedo de eventos en .NET
Ahora digamos que tengo un evento que se llama 'UsingForce' que se genera cuando se llama al método 'ForcePush', y sombreo el evento en la clase derivada (esto es porque 'Yoda' tiene una interfaz ' IForcePowers 'que declara este evento) y cada clase plantea su evento respectivo.
Si tengo una instancia de 'Yoda' que está declarada como tipo 'Jedi' (como arriba) y pongo un manejador de eventos en el evento 'UsingForce' de 'Jedi', entonces el método 'ForcePush' es llamado en la clase 'Yoda', ¿se alcanzará este manejador de eventos?
Esta es una pregunta increíble. Voy a usar el ejemplo de Jedi/Yoda la próxima vez que tenga que explicar la herencia. – David
David: Estoy de acuerdo, es increíble, tan increíble que me distrajo de la pregunta real y terminé pensando en star wars por un tiempo. –
Lo siento chicos, intentaré hacer que mis preguntas sean un poco menos impresionantes la próxima vez. :) – link664