小编典典
@Override是Java注释。它告诉编译器以下方法将覆盖其超类的方法。例如,假设您实现了一个Person类。
public class Person {
public final String firstName;
public final String lastName;
//some methods
@Override public boolean equals(Object other) {
...
}
}
人员类具有equals()方法。equals方法已经在Person的超类Object中定义。因此,以上equals()的实现是对Persons的equals()的重新定义。也就是说,Person覆盖equals()。
覆盖方法而不显式注释是合法的。那么@Override注释有什么用呢?如果您不小心尝试以这种方式覆盖equals()怎么办:
public boolean equals(Person other) {
...
}
上面的案例有一个错误。您本来打算覆盖equals(),但没有。为什么?因为真正的equals()获取一个Object作为参数,而equals()获取一个Person作为参数。编译器不会告诉您该错误,因为编译器不知道您要覆盖。就编译器所知,您实际上打算重载
equals()。但是,如果您尝试使用@Override注解覆盖均等值:
@Override public boolean equals(Person other) {
...
}
现在,编译器知道您有错误。您想覆盖但没有。因此,使用@Override批注的原因是显式声明方法重写。
2020-11-01
本文发布于:2024-01-30 04:43:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656104019304.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |