什么是VB"Shadow"或C#"new"关键字在Java中等效?

Beh*_*zad 1 c# java vb.net shadow

当我想定义非虚拟方法的新实现时,我可以new在C#中使用关键字或shadow在VB中使用关键字.例如:

C#代码:

public class Animal
{
    public void MyMethod()
    {
        //Do some thing
    }
}

public class Cat : Animal
{
    public new void MyMethod()
    {
        //Do some other thing
    }
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:

什么是VB Shadow(或C# new)关键字等同于Java的

T.J*_*der 5

你的问题的主要答案可能是"没有." 细节:

Java的方法默认是"虚拟的"(在C#术语中); 它们可以在子类中重写.原始方法不需要特殊关键字.在定义覆盖时,使用注释是有用的(但不是必需的),@Override这样编译器会在你认为自己没有覆盖时发出警告,因此阅读代码的人(和JavaDoc)知道你是什么这样做.

例如:

class Parent {
    public void method() {
    }
}
class Child extends Parent {
    @Override
    public void method() {
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,有没有特殊的关键字,就methodParent.

如果标记了Java方法final(非虚拟,C#默认),则根本不能覆盖它.new在这种情况下,没有与C#相同的东西.例如:

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)
    }
}
Run Code Online (Sandbox Code Playgroud)