Possible Duplicate:
When do you use Java's @Override annotation and why?
我的问题是非常基本的为什么我们人们使用 @Override
注释,这个注释的重要性是什么?
在旧的 JDK 中为什么它不显示为警告,但在最新的 JDK 中它需要然后为什么..?
最佳答案
假设你有:
public class Foo
{
public void bar(String x, String y) {}
}
public class Foo2 extends Foo
{
public void bar(String x, Object y) {}
}
你真的的意思是Foo2.bar
覆盖Foo.bar
,但由于签名错误,它没有。如果你使用 @Override
你可以让编译器检测到错误。它还向任何阅读代码的人表明这是覆盖现有方法或实现接口(interface)的代码 - 向他们提供有关当前行为和重命名方法可能产生的影响的建议。 p>
另外,如果一个方法重写了一个方法没有指定@Override
,你的编译器可能会给你一个警告,这意味着你可以检测是否有人添加了一个带有在您不知道的情况下对父类(super class)进行相同的签名 - 您可能不希望重写新方法,因为您现有的方法可能具有不同的语义。虽然 @Override
没有提供“取消覆盖”该方法的方法,但它至少突出了潜在的问题。
关于java - @Override 注释的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8076008/