java中的“ @Override”是什么?

public class Animal {

public void eat() { System.out.println("I eat like a generic Animal."); }

}

public class Wolf extends Animal {

@Override

public void eat() { System.out.println("I eat like a wolf!"); }

}

是否@Override确实有一些功能,或者它只是有点对此有何评论?

回答:

从有关注解的Java教程中:

@Override注释告知编译器该元素旨在覆盖超类中声明的元素(覆盖方法将在名为“接口与继承”的课程中进行讨论)。

   // mark method as a superclass method

// that has been overridden

@Override

int overriddenMethod() { }

虽然在重写方法时不需要使用此批注,但它有助于防止错误。如果标有的方法@Override无法正确覆盖其父类之一中的方法,则编译器将生成错误。

让我们看一下Java语言规范9.6.1.4

Override中给出的示例。假设equals在这种情况下,您想覆盖一个方法,但是您写道:

    public boolean equals(Foo that) { ... }

代替:

    public boolean equals(Object that) { ... }

尽管此代码是合法的,但用equals方法注释声明@Override将触发编译时错误,因为实际上您没有覆盖它,而是在重载它。这可能会导致讨厌的错误,并且Override注释类型有助于及早发现它们。

以上是 java中的“ @Override”是什么? 的全部内容, 来源链接: utcz.com/qa/397342.html

回到顶部