Angel Asked: 2020-04-17 15:55:06 +0800 CST 2020-04-17 15:55:06 +0800 CST 2020-04-17 15:55:06 +0800 CST java中的@Override行是什么? 772 打扰一下,我是java新手,我在互联网上寻找答案,但是他们到处都用一种非常复杂的语言说话,有人可以解释一下,以便我的奶奶能理解吗? 谢谢。 java 7 Answers Voted E. Betanzos 2020-04-17T20:09:46+08:002020-04-17T20:09:46+08:00 尽管很多人已经给了你答案,但我决定给你我的答案,因为我认为以前的答案都不是完全正确的。 注释@Override只是用于强制编译器在编译时检查您是否正确覆盖了方法,从而避免运行时错误,这将更难检测。 例如,如果您要覆盖toString()类方法Object并这样做: public class MiClase { public String ToString() { return "Hola, esta es MiClase"; } } 您并没有真正覆盖该方法,而是创建一个新方法,因为正确的名称以小写而不是大写开头。因此,如果稍后在您的程序中您尝试获取 的String实例的对应项MiClase,您将尝试执行此操作,例如: System.out.println(instanciaMiClase.toString()); 得到这样的输出:MiClase@55b7a4e0,因为正在调用父类(在本例中为 Object)的方法。但是,如果您添加注释: public class MiClase { @Override public String ToString() { return "Hola, esta es MiClase"; } } 编译器会警告您有这样的错误消息:“方法不会覆盖其超类中的方法”。 这就是为什么存在这样的注释,以便能够在编译时检测到您不满足覆盖方法的要求。 我的建议是你总是把这个注解放在你要重写的方法中,这样会省去很多麻烦。 Best Answer Klaimmore 2020-04-17T18:13:27+08:002020-04-17T18:13:27+08:00 java中的@Override行是什么? 没门。注释的使用@Override是可选的。 它唯一真正有用的是文档: 标记为@Override的方法应该覆盖某个父类的方法 如果不是这样,java编译器会产生错误 例子: class Base { public void metodoA() { System.out.println("Base A"); } } class Hija extends Base { public void metodoA() { System.out.println("Hija A"); } //@Override public void metodoB() { System.out.println("Hija B"); } } metodoA()of Hijaif 覆盖metodoA()of ,Base尽管没有注释@Override 然而,如果你把它@Override放到一个不覆盖任何东西的方法中,编译器会抛出一个错误: 错误:方法没有覆盖或实现超类型中的方法 user75901 2020-04-17T16:11:06+08:002020-04-17T16:11:06+08:00 继承的类能够修改其父类的方法,例如: public class Auto{ public String modelo; public void manejar() { System.out.println("Manejar un vehículo"); } } 现在我们重写handle方法,让它继续存在于子类中但有不同的行为 class Moto extends Auto { @Override public void manejar() { System.out.println("Manejando mi primer motocicleta"); } } 现在,例如,如果我们想要访问所述类的方法,它应该是这样的: public class Test { public static void main(String args[]) { Movil one = new Auto(); Movil two = new Moto(); one.manejar(); two.manejar(); } } OVERRIDE 的使用 简而言之,override 允许方法覆盖或修改上级类中的方法声明。 参考来源 the-breaker 2020-04-17T16:35:01+08:002020-04-17T16:35:01+08:00 很简单,你@Override在继承的时候要覆盖一个类的方法,我举个例子: 如果我有mascota这个函数的类correr(): public class mascota{ private String nombre; private int energia; public String correr() { energia--; System.out.println("Energia: " + energia); } } 然后我创建perro将继承类的类mascota,假设狗在跑步时花费更多的精力,所以我们修改correr()函数@Override: public class perro extends mascota{ @Override public String correr() { energia=energia-2; System.out.println("Energia: " + energia); } } 简而言之@Override,它允许您在新类中重写先前类的先前定义的函数。希望对你有帮助,问候。 Ruslan López 2020-04-17T20:10:11+08:002020-04-17T20:10:11+08:00 最简单的答案是同一文档中的答案,翻译后的内容如下: 在使方法可重新定义时,您可能需要使用 @Override 注释,它告诉编译器您打算始终覆盖超类的方法。如果由于某种原因编译器检测到该方法在任何超类中都不存在,它将产生错误。 该错误将表明您忘记创建必要的功能,因此当您与新手程序员一起工作时,将其用于帮助他们解决表明他们不符合您提出的最低要求的错误将非常有帮助您的界面可以帮助他们了解,例如: 他们拼错了父类的方法名 他们没有提出必要的方法 他们使用了同名的错误类 想继承父类中不存在的方法 来源:https ://docs.oracle.com/javase/tutorial/java/IandI/override.html Jorge H - L 2022-01-29T10:28:11+08:002022-01-29T10:28:11+08:00 Java注解@Override用于: 指示方法的覆盖。 一个例子是: 当为类中的对象的实现创建接口时,这允许覆盖实现该接口的类中方法的行为和功能。 David Minaya 2020-04-17T18:54:13+08:002020-04-17T18:54:13+08:00 @Override是一个注解。注释是 JVM(Java 虚拟机)读取以了解如何处理代码的元数据。 要了解注释的工作原理,您首先必须了解元数据的工作原理。元数据是具有有关其他数据的信息的数据,程序使用此信息来了解如何使用该数据。例如,在音频文件中,播放器使用其格式来知道如何播放它,在这种情况下,元数据就是格式。 JVM 使用注释来决定如何处理代码。JVM 以不同的方式处理带注释的代码。 被覆盖的方法不必以@Override强制的方式携带注释,没有它的被覆盖的方法无论如何都可以工作。注解@Override用于确保 JVM 正确覆盖该方法。这就像告诉 JVM “嘿,别忘了正确地覆盖这个方法”。 现在不仅仅是 JVM 使用注解。任何处理程序代码的程序、库、框架等都可以使用注解;就像使用自己的注释来处理代码的 Spring 框架一样。 一个普通的开发人员不必担心如何实现注解,他只需要知道处理他的代码的程序将它们用于什么。实现注解有点复杂,你必须了解反射和其他复杂的问题。 要了解程序使用其注解的目的,请查阅该注解的文档。例如, Java 框架使用@NonNull注解来防止方法参数为空,如果它们为空,则框架在编译时抛出异常。 要了解有关注解的更多信息,请参阅官方 Java 文档中的以下文章。 注释
尽管很多人已经给了你答案,但我决定给你我的答案,因为我认为以前的答案都不是完全正确的。
注释
@Override
只是用于强制编译器在编译时检查您是否正确覆盖了方法,从而避免运行时错误,这将更难检测。例如,如果您要覆盖
toString()
类方法Object
并这样做:您并没有真正覆盖该方法,而是创建一个新方法,因为正确的名称以小写而不是大写开头。因此,如果稍后在您的程序中您尝试获取 的
String
实例的对应项MiClase
,您将尝试执行此操作,例如:得到这样的输出:
MiClase@55b7a4e0
,因为正在调用父类(在本例中为 Object)的方法。但是,如果您添加注释:编译器会警告您有这样的错误消息:“方法不会覆盖其超类中的方法”。
这就是为什么存在这样的注释,以便能够在编译时检测到您不满足覆盖方法的要求。
我的建议是你总是把这个注解放在你要重写的方法中,这样会省去很多麻烦。
没门。注释的使用
@Override
是可选的。它唯一真正有用的是文档:
@Override
的方法应该覆盖某个父类的方法例子:
metodoA()
ofHija
if 覆盖metodoA()
of ,Base
尽管没有注释@Override
然而,如果你把它
@Override
放到一个不覆盖任何东西的方法中,编译器会抛出一个错误:继承的类能够修改其父类的方法,例如:
现在我们重写handle方法,让它继续存在于子类中但有不同的行为
现在,例如,如果我们想要访问所述类的方法,它应该是这样的:
OVERRIDE 的使用 简而言之,override 允许方法覆盖或修改上级类中的方法声明。
参考来源
很简单,你
@Override
在继承的时候要覆盖一个类的方法,我举个例子:如果我有
mascota
这个函数的类correr()
:然后我创建
perro
将继承类的类mascota
,假设狗在跑步时花费更多的精力,所以我们修改correr()
函数@Override
:简而言之
@Override
,它允许您在新类中重写先前类的先前定义的函数。希望对你有帮助,问候。最简单的答案是同一文档中的答案,翻译后的内容如下:
在使方法可重新定义时,您可能需要使用 @Override 注释,它告诉编译器您打算始终覆盖超类的方法。如果由于某种原因编译器检测到该方法在任何超类中都不存在,它将产生错误。
该错误将表明您忘记创建必要的功能,因此当您与新手程序员一起工作时,将其用于帮助他们解决表明他们不符合您提出的最低要求的错误将非常有帮助您的界面可以帮助他们了解,例如:
来源:https ://docs.oracle.com/javase/tutorial/java/IandI/override.html
Java注解
@Override
用于:一个例子是:
当为类中的对象的实现创建接口时,这允许覆盖实现该接口的类中方法的行为和功能。
@Override是一个注解。注释是 JVM(Java 虚拟机)读取以了解如何处理代码的元数据。
要了解注释的工作原理,您首先必须了解元数据的工作原理。元数据是具有有关其他数据的信息的数据,程序使用此信息来了解如何使用该数据。例如,在音频文件中,播放器使用其格式来知道如何播放它,在这种情况下,元数据就是格式。
JVM 使用注释来决定如何处理代码。JVM 以不同的方式处理带注释的代码。
被覆盖的方法不必以
@Override
强制的方式携带注释,没有它的被覆盖的方法无论如何都可以工作。注解@Override
用于确保 JVM 正确覆盖该方法。这就像告诉 JVM “嘿,别忘了正确地覆盖这个方法”。现在不仅仅是 JVM 使用注解。任何处理程序代码的程序、库、框架等都可以使用注解;就像使用自己的注释来处理代码的 Spring 框架一样。
一个普通的开发人员不必担心如何实现注解,他只需要知道处理他的代码的程序将它们用于什么。实现注解有点复杂,你必须了解反射和其他复杂的问题。
要了解程序使用其注解的目的,请查阅该注解的文档。例如, Java 框架使用@NonNull注解来防止方法参数为空,如果它们为空,则框架在编译时抛出异常。
要了解有关注解的更多信息,请参阅官方 Java 文档中的以下文章。
注释