在Java中覆盖非虚方法时,建议使用@Override注释,但是如果实现抽象方法怎么办?我也应该使用@Override吗?

有帮助吗?

解决方案

在这种情况下,我更倾向于使用 @Override ,因此如果超类发生更改(要么完全删除方法,要么更改其签名等),方法会在子类中被标记。 )。

唯一真正的区别在于,如果没有注释,如果超类/接口中的方法被改变或移除,则所讨论的实现仅仅变为“正常”。该类的方法。因此,如果您仅为履行合同而实施该方法,则应添加注释;如果方法在你的类中有意义,你可能不应该添加它,无论任何实现的接口或继承的抽象方法。

其他提示

是 - 再次,它告诉编译器,“我真的想在这里覆盖一个方法。如果不是一个相应的方法来覆盖,我就犯了一个错误,想要被告知它!“

我个人觉得很遗憾,这只是一个注释,而不是语言的一部分(就像它在C#中一样),但当然这也是后见之明的好处。

是。 Joshua Bloch建议在Effective Java中实践。

实际上,Joshua Bloch在 Effective Java(第2版)的第178页的最后一段中说,对于使用覆盖注释,因为编译器无论如何都会给出错误。但是,“这样做无害”。

我建议选择一种策略并坚持不懈地使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top