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的?
你的问题的主要答案可能是"没有." 细节:
Java的方法默认是"虚拟的"(在C#术语中); 它们可以在子类中重写.原始方法不需要特殊关键字.在定义覆盖时,使用注释是有用的(但不是必需的),@Override这样编译器会在你认为自己没有覆盖时发出警告,因此阅读代码的人(和JavaDoc)知道你是什么这样做.
例如:
class Parent {
public void method() {
}
}
class Child extends Parent {
@Override
public void method() {
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,有没有特殊的关键字,就method在Parent.
如果标记了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)