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