我是Android开发新手。我想知道为什么我们必须在android中使用@Override注释的每个重写方法之前?在常规Java中,这不是必需的。
请帮助 谢谢
答案 0 :(得分:4)
使用@Override
表示法,因此编译器可以警告您方法签名是否与超类方法签名不同。它可以警告你有关繁琐的错误,并且它在Android中不是必需的,但它在“普通”Java编程和Android编程中都是很好的做法。
如果您处于“普通”状态,Java拼错了toString方法,例如public String toString(int n) {...}
并且您有@Override
编译器会警告您,因为您没有覆盖超类中的方法。
答案 1 :(得分:1)
这是一种最佳实践,它是安全的。假设你有一个班级:
public class MyClass {
...
...
public void doSomething() {
...
...
}
}
现在假设您扩展它:
public class MyExtendedClass extends MyClass {
...
...
public void doSomthing() {
...
}
}
此代码将编译,但您会遇到问题,因为您实际上没有覆盖该方法!请注意拼写错误。现在,如果您使用@Override
注释它:
public class MyExtendedClass extends MyClass {
...
...
@Override
public void doSomthing() {
...
}
}
java编译器会抱怨,因为您试图覆盖基类中不存在的方法。基本上使用@Override
可以在编译时捕获这些问题。
这在重构时特别有用。如果您更改方法签名或名称,但没有@Override
注释,某些方法可能会导致难以发现的错误(当然,对于现代IDE来说,很多这样的痛苦是减轻了,但仍然)。如果您明智地使用@Override
注释,现在将出现编译器错误,因此您将能够在派生类中修复方法签名。
答案 2 :(得分:0)
因为这是一个很好的编程习惯。如果基本方法的签名发生变化(我之前在这些类型的错误上浪费了数小时),那么在不使用@Override
的情况下覆盖方法会在将来导致潜在的难以发现的错误。