【发布时间】:2015-10-13 09:16:17
【问题描述】:
当我想定义一个非虚方法的新实现时,我可以在 C# 中使用 new 关键字或在 VB 中使用 shadow 关键字。例如:
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
现在,我的问题是:
Java 中等效的 VB Shadow(或 C# new)关键字是什么?
【问题讨论】:
-
请注意,在这种情况下,您并没有覆盖该方法,而是从类层次结构中的这一点开始定义一个新的实现。那不一样。覆盖具有非常特定的语义,尤其是如何处理对超类型变量的调用该方法。并且遮蔽超类型的方法实现具有不同的语义。
-
@Joey 我将我的问题编辑为新的实现,而不是覆盖关键字。感谢您的注意。