在 VB.NET 中有一个关键字'shadows'。假设我有一个名为“Jedi”的基类和一个名为“Yoda”的派生类,它继承自“Jedi”。如果我在“Jedi”中声明一个名为“ForcePush”的方法并在“Yoda”中将其隐藏,那么当在“Yoda”类的实例上调用该方法时,它将忽略基类实现并使用派生类的实现. 但是,如果我有一个最初声明为“Jedi”类型的“Yoda”实例,即Dim j as Jedi = new Yoda()
,并在该实例上调用“ForcePush”方法,它将使用 Jedi 实现。
现在假设我有一个名为“UsingForce”的事件,它在调用“ForcePush”方法时引发,并且我在派生类中隐藏了该事件(这是因为“Yoda”有一个接口“IForcePowers”声明这个事件)并且每个班级都会引发它各自的事件。
如果我有一个声明为“Jedi”类型的“Yoda”实例(如上),并且我在“Jedi”的“UsingForce”事件上放置了一个事件处理程序,然后在“Jedi”中调用“ForcePush”方法Yoda 的课程,会到达这个事件处理程序吗?