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

时间:2015-10-13 09:16:18

标签: java c# vb.net shadow

当我想定义非虚拟方法的新实现时,我可以在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)关键字等价物是什么?

1 个答案:

答案 0 :(得分:5)

你的问题的主要答案可能是"没有。"详细说明:

Java的方法是"虚拟" (默认情况下,在C#术语中);它们可以在子类中重写。原始方法不需要特殊关键字。定义覆盖时,使用Options -MultiViews DirectoryIndex articles.php RewriteEngine On ## Unless directory, remove trailing slash RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+?)/$ /$1 [NE,R=302,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^articles/([\w-]+)/?$ articles.php?cat=$1 [NC,L,QSA] RewriteRule ^articles/([\w-]+)/([0-9]+)/?$ articles.php?cat=$1&currentpage=$2 [NC,L,QSA] RewriteRule ^article/([0-9]+)/([\w-]+)/?$ article.php?id=$1&title=$2 [NC,L,QSA] RewriteRule ^articles/?$ articles.php [L] 注释是有用的(但不是必需的),以便编译器在您认为时不会覆盖时警告您你是,所以阅读代码(和JavaDoc)的人都知道你在做什么。

E.g:

@Override

请注意,class Parent { public void method() { } } class Child extends Parent { @Override public void method() { } } 中的method没有特殊关键字。

如果Java方法标记为Parent(非虚拟,C#默认),则根本不能覆盖它。在该上下文中没有与C#final等效的内容。 E.g:

new