2011-12-20 48 views
1

可能重复:
When do you use Java's @Override annotation and why?是否必须使用@Override注释继承的方法?

新手问题 - 我在写我的第一个Android应用(其我的第二个Java应用程序)。我注意到,在例子中onCreate()方法有@Override注释,但我没有使用该注释,它似乎工作正常。

使用@Override注释还是我为自己设置问题是否是一个好习惯。那么其他遗传方法如何 - 等?

+4

http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – 2011-12-20 15:49:28

回答

5

@Override批注允许编译器确保您实际覆盖方法或实现接口方法(Java 6+)。这可以避免一类简单的错误,例如搞砸方法签名,而不是实际覆盖你的想法。

这不是强制性的,但它是一个好主意,并且是编译器的免费帮助。

9

这是唯一的好做法,这

  • 帮助开发者了解哪些方法重写
  • 让编译器检查签名是符合的覆盖方法
+0

特别针对第二点+1。但不要强调第一点,因为它不是强制性的:任何好的IDE(Eclipse,IntelliJ)都会向您显示独立于@Override注释的重写方法。 – Guillaume 2011-12-20 15:54:32

1

我认为这是不是只是一个很好的做法,但一个非常好的做法。 除了对程序员提醒之外,它还可以帮助您不要在程序中留下死去的代码,并且经常避免愚蠢的错误。

例如,如果您覆盖您的基类的方法foo(),然后从基类中删除此方法。如果您不使用@Override注释,则有可能无法再访问的代码仍然存在于子类中。但是,如果您确实使用@Override,您会收到汇编错误,表示您必须对代码执行某些操作。

1

如果你真的是一个新手,你必须了解编译时(当你编译你的源代码)和运行时(当你运行你编译的类时)。

假设,您需要重写某些方法,但是重写您给出错误singnature的方法(与原始方法不同)。

现在,在这种情况下,如果已经使用了那个@Override注解,那么编译器会告诉你实际上并没有重写该方法,即使你这么想。

但是,如果您不使用该注释,那么它将编译并且最终结果是运行时中的一些错误。

相关问题