Java Android Studio中@override的含义
我对Android Studio完全陌生,我想知道Android Studio中的Java Android Studio中@override的含义,java,android,annotations,overriding,Java,Android,Annotations,Overriding,我对Android Studio完全陌生,我想知道Android Studio中的@Override语句的用途。这是一个Java语言。它标志着该方法将覆盖超类中的方法。是java 指示方法声明旨在重写超类中的方法声明。如果使用此注释类型对方法进行注释,但未重写超类方法,则需要编译器生成错误消息 另请参见 例如: class Parent{ public void foo(){ } } class Child extends Parent{ //compile p
@Override
语句的用途。这是一个Java语言。它标志着该方法将覆盖超类中的方法。是java
指示方法声明旨在重写超类中的方法声明。如果使用此注释类型对方法进行注释,但未重写超类方法,则需要编译器生成错误消息
另请参见
class Parent{
public void foo(){
}
}
class Child extends Parent{
//compile perfect !
@Override
public void foo(){
}
//will show compile time error message here as it is not being overridden
@Override
public void foo(int i){
}
}
这是一个特殊的、编译器保留的Java注释,表示您正在重写一个超类方法。它是一个Java注释,告诉编译器该方法打算重写来自超类的方法。严格来说,这不是必需的,但有助于在编译时捕获错误。这是一个Java注释(不是特定于Android的)。您可以使用它来表示此方法重写某个方法 使用它的原因是为了在创建要重写方法的方法时捕获错误,但由于某些错误,它没有捕获错误,例如方法名称中的键入错误、方法签名中的错误等。。例如,有时开发人员会:
class Foo {
public boolean equals(Foo other) {
...
作者打算重写超类“equals
方法,但它没有(参数类型应该是Object
)。该程序可以很好地编译,但不会按照作者的意图使用Foo.equals
class Foo {
@Override
public boolean equals(Foo other) {
...
编译现在将给出一个错误,因为该方法不重写另一个方法。这就提前指出了问题,并希望能节省一些调试时间来跟踪问题。@Override是一个很好的解决方案。它告诉编译器下面的方法是它的一个方法。例如,假设您实现了一个Person类
public class Person {
public final String firstName;
public final String lastName;
//some methods
@Override public boolean equals(Object other) {
...
}
}
person类有一个equals()方法。equals方法已在Person的超类中定义。因此,上述equals()的实现是对个人equals()的重新定义。也就是说,Person覆盖equals()
在不显式注释的情况下重写方法是合法的。那么@Override注释有什么好处呢?如果您不小心试图以这种方式重写equals(),该怎么办:
public boolean equals(Person other) {
...
}
上面的案例有一个bug。您本想重写equals(),但没有。为什么?因为real equals()获取一个对象作为参数,而您的equals()获取一个人作为参数。编译器不会告诉你这个bug,因为编译器不知道你想重写它。据编译器所知,您实际上打算使用equals()。但如果您试图使用@override注释覆盖等于:
@Override public boolean equals(Person other) {
...
}
现在编译器知道您有一个错误。你想覆盖,但你没有。因此,使用@Override注释的原因是显式声明方法重写。那么它将是一个全新的方法名?取决于我如何定义ir?