为什么@Override在java或android中需要?

Sam*_*iya 9 java android

在java或Android中有@Override注释.这是什么意思?我发现当方法来自子类或继承接口的方法时使用它,我想进一步了解其他是@SuppressWarnings它也是Anonation,如果是java使用了多少个annonation以及用于哪个目的.

Bri*_*acy 18

这个问题也在这里得到了解答,并且非常简洁: Android @Override用法

这是一个注释,您可以使用它来告诉编译器和IDE您希望该注释的方法是超类方法的重写.如果您犯了错误,它们会有警告/错误,例如,如果您打算覆盖方法但拼错它,如果注释在那里IDE或编译器会告诉您它实际上并不覆盖超类方法因此你可以确定原因并纠正拼写错误.

这对Android应用程序和活动来说更为重要,例如,所有调用都将基于活动生命周期 - 如果您没有正确覆盖生命周期方法,它们将永远不会被框架调用.一切都会正常编译,但你的应用程序将无法按照你想要的方式工作.如果添加注释,则会出现错误.

换句话说,如果添加@Override,这有助于确保真正覆盖现有方法!非常有用.

  • @stivlo:没有.如果设置了Override并且该方法没有覆盖任何内容,则不会有任何运行时,因为它将阻止该类进行编译.这就是注释有用的原因:它告诉编译器开发人员的意图是覆盖一个方法.如果编译器检测到没有覆盖,它将拒绝编译. (3认同)

Tud*_*dor 9

覆盖意味着您正在更改从父类继承的方法的行为,而不更改签名.@Override注释用于标记此.它与多态性的概念密切相关.例:

public class A {
    public void foo() {
        System.out.println("A");
    }
}

public class B extends A {

    @Override
    public void foo() { // I want to change the way foo behaves
        System.out.println("B"); // I want to print B instead of A
    }
}

public static void main(String[] args) {
    A a = new A();
    a.foo(); // prints A

    A b = new B(); // I can use type B because it extends A
    b.foo(); // I have overriden foo so it prints B now
}
Run Code Online (Sandbox Code Playgroud)