1
当我想定义一个非虚拟方法的新实现时,我可以在C#中使用new
关键字,或者在VB中使用shadow
关键字。例如:什么是VB的“阴影”或C#“新”关键字相当于Java?
C#代码:
public class Animal
{
public void MyMethod()
{
//Do some thing
}
}
public class Cat : Animal
{
public new void MyMethod()
{
//Do some other thing
}
}
VB代码:
Public Class Animal
Public Sub MyMethod()
'Do some thing
End Sub
End Class
Public Class Cat
Inherits Animal
Public Shadows Sub MyMethod()
'Do some other thing
End Sub
End Class
现在,我的问题是:
什么是VB Shadow
(或C#new
)关键字相当于Java?
请注意,在这种情况下,您不是重写*方法,而是从类层次结构中的此处开始定义新的实现。那不一样。重写具有相当特定的语义,尤其是如何在超类型变量上处理对该方法的调用。并且遮蔽超类型的方法实现具有不同的语义。 – Joey
@Joey我编辑我的问题到新的实现,而不是覆盖关键字。谢谢你的提示。 – Behzad