[英]Question about @Override annotation
我是android开发的新手。 我想知道为什么我们必须在android中的每个重写方法前加上@Override注释? 在常规Java中,这不是必需的。
请帮忙谢谢
使用@Override
表示法,以便如果方法签名与超类方法签名不同,则编译器可以警告您。 它可以警告您乏味的错误,并且在Android中不是必需的,但是在“常规” Java编程和Android编程中都是好的做法。
如果您在“普通” Java中拼写了toString方法,例如public String toString(int n) {...}
并且您使用了@Override
,编译器会警告您,因为您没有覆盖超类中的方法。
这是最佳做法,而且很安全。 假设您有一堂课:
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
批注,则某些方法可能会@Override
,从而导致难以发现的错误(当然,对于现代IDE来说,可以减轻很多这种麻烦,但是,仍然)。 如果您明智地使用@Override
批注,则现在会遇到编译器错误,因此可以在派生类中修复方法签名。
因为这是一种好的编程习惯。 如果基本方法的签名发生更改,则在不使用@Override
情况下覆盖方法会在将来导致潜在的难以发现的错误(我之前在此类错误上已经浪费了数小时)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.