gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:35 25 4
gpt4 key购买 nike

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

最佳答案

您问题的主要答案可能是“没有”。详情:

默认情况下,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)
}
}

关于java - 什么是 VB "Shadow"或 C# "new"关键字在 Java 中等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com