VB的“影子”是什么?或者c# "new"Java中的关键字等价
本文关键字:quot new Java 关键字 影子 是什么 或者 VB | 更新日期: 2023-09-27 18:17:20
当我想定义一个非虚方法的新实现时,我可以使用c#中的new
关键字或VB中的shadow
关键字。例如:
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中的等效是什么?
你的问题的主要答案可能是"没有"。细节:
Java的方法默认是"虚拟的"(c#术语);它们可以在子类中被重写。在原方法上不需要特殊的关键字。在定义重写时,使用@Override
注释是有用的(但不是必需的),这样编译器就会警告你,如果你认为你没有重写,那么阅读代码(和JavaDoc)的人知道你在做什么。
例如:
class Parent {
public void method() {
}
}
class Child extends Parent {
@Override
public void method() {
}
}
请注意,Parent
中没有method
上的特殊关键字。
如果一个Java方法被标记为final
(非虚拟的,c#的默认值),你根本不能覆盖它。在这个上下文中没有与c#的new
等价的。例如:
class Parent {
public final void method() {
}
}
class Child extends Parent {
@Override // <== Won't compile, you simply can't override
public void method() { // <== final methods at all (even if you added
// <== "final" to the declaration)
}
}