Java:我应该在实现抽象方法时添加@Override注解吗?

在Java中重写非虚方法时,build议使用@Override注释,但是如果我实现抽象方法呢? 我应该使用@Override吗?

在这种情况下,我倾向于使用@Override ,以便如果超类更改(完全删除方法或更改其签名等),则在子类中标记该方法。

唯一真正的区别是没有注解,如果超类/接口中的方法被改变或移除,那么所讨论的实现简单地变成该类的“正常”方法。 因此,如果您只是为了履行合同而实施该方法,则应该添加注释; 如果该方法在您的类中有意义,则不应该添加它,而不考虑是否实现了接口或inheritance的抽象方法。

是的 – 它再次告诉编译器:“我真的想在这里重写一个方法,如果没有相应的方法来覆盖,我犯了一个错误,想要告诉它!

就我个人而言,我认为这只是一个注释,而不是语言的一部分(就像在C#中),可惜的是,这当然是事后的好处。

是。 由Joshua Bloch在Effective Java中推荐使用。

实际上,Joshua Bloch在Effective Java(2nd Ed。)的第178页的最后一段说,具体类的方法重写抽象方法来使用Override注解并不是必须的,因为编译器总会给出一个错误。 但是,“这样做没有害处”。

我build议select一个策略并坚持不懈。