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

为什么java或android中需要@Override?,java,android,Java,Android,在java或Android中有@Override注释。这是什么意思?我发现当方法来自子类或继承接口的方法时,会使用它,我想进一步了解另一个是@SuppressWarnings,它也是一个名称,如果是,java使用了多少注释以及用于什么目的。重写意味着您正在更改从父类继承的方法的行为,不改变签名。@Override注释用于标记此项。它与多态性的概念密切相关。例如: public class A { public void foo() { System.out.println

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

重写意味着您正在更改从父类继承的方法的行为,不改变签名。@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
}

只是为了确保在编译时覆盖它,并提高可读性

示例

class Animal{
  public void eat(Food food){
  }
}

class Person extends Animal {
  @Override
  public void eat(String food){
  }

}

这将给您带来编译时错误,因为您实际上并没有覆盖它(请参见食物类型)

这个问题也在这里得到了简单的回答:

它是一个注释,您可以使用它来告诉编译器和IDE,您希望具有该注释的方法是超类方法的重写。如果您出错,它们会发出警告/错误,例如,如果您打算重写一个方法但拼写错误,如果存在注释,IDE或编译器会告诉您它实际上没有重写超类方法,因此您可以确定原因并更正拼写错误

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


换句话说,如果您添加@Override,这将帮助您确保您确实覆盖了现有的方法!非常有用。

@覆盖了JDK1.6中引入的注释,即元数据。如果您不在重写方法之前编写它,它不会有任何区别,但它只是用来增加编译器的可读性。

标记您确实实现或更改了一个方法。就像我说的,它是在编译时检查的。也就是说,例如,如果要实现
@Override public void equals(final Car pObject),则会出现一个错误
而不是
@覆盖公共void equals(最终对象pObject)

除了其他附加细节外,只需查看这两个注释的定义的源代码:和来自Java规范的。

听起来您的问题更多地是关于注释的,所以我将回答这个问题。注释提供有关正在注释的项的额外元数据。这允许其他代码使用该信息来决定如何运行。该语言中有大量内置代码,但您可以自己编写

您给出的两个示例告诉编译器有关正在编译的代码的额外信息。当它看到
@Override
时,它会检查以确保该方法实际上正在重写一个方法。当它看到
@SuppressWarnings
时,它知道应该忽略代码块中存在的任何给定类型的编译器警告


它们也可以在编译器之外使用。有许多库让您为类对象添加注释,它使用这些元数据来构建数据库或解析xml文件。

Behavir意味着我无法更改参数并返回typeThnx以获取更多的规范。还有什么像@SuppressWarnings?SuppressWarnings只是告诉编译器不要为类对象发出任何警告各自的代码。这就像说“我不在乎潜在的不安全代码,不要打扰我”。@SuppressWarnings(“未使用”)编译器检查并编译未使用的代码?我们可以重写当前的类方法吗?给我一个例子,当前的类方法是什么意思?没有问题,但最好添加,以确保您实际上重写了它,并且它增加了code@MayurPatel问题是如果你想推翻某些东西,但是如果你没有,在你运行程序之前你不会知道(也许)。这样做的目的是确保如果你想覆盖你实际上是什么。你应该使用
@override
,而不是避免使用它。1.5中引入了说明,包括
@override
。这样做的目的是确保你实际上覆盖了你认为是的东西,而不是“增加编译器的可读性”。这是一个好问题,但。。。查找起来很简单。确切地说,并且强调一下,注释在运行时实际上没有做任何事情,它对阅读代码的人有帮助。如果签名与父项相同,则该方法将被重写(无论是否带有批注)。@stivlo:否。如果设置了Override且该方法不重写任何内容,则不会有任何运行时,因为它将阻止类编译。这就是注释有用的原因:它告诉编译器开发人员的意图是重写方法。如果编译器检测到没有重写,它将拒绝编译。注释对防止相同的重复方法或其他东西有用吗?