Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果覆盖的保留策略是源,则运行时多态性如何工作_Java_Annotations_Polymorphism_Overriding - Fatal编程技术网

Java 如果覆盖的保留策略是源,则运行时多态性如何工作

Java 如果覆盖的保留策略是源,则运行时多态性如何工作,java,annotations,polymorphism,overriding,Java,Annotations,Polymorphism,Overriding,我知道从超类重写方法只不过是运行时多态性 Oracle文档表示,@Override注释使用@Retention(value=SOURCE)。这意味着编译代码时,@Override注释将被删除 所以我这里的问题是,运行时多态性实际上是如何工作的。它必须在编译时执行任何操作吗?这里实际发生了什么?感谢您的帮助 重写是一种注释,如果将其添加到非重写的方法中,则编译阶段将失败。在编译阶段之后,它没有任何实用程序,因此使用保留策略。Polimorphism在运行时发生,独立于覆盖注释。取决于创建的类实例。

我知道从超类重写方法只不过是
运行时
多态性

Oracle文档表示,
@Override
注释使用
@Retention(value=SOURCE)
。这意味着编译代码时,
@Override
注释将被删除


所以我这里的问题是,
运行时
多态性实际上是如何工作的。它必须在编译时执行任何操作吗?这里实际发生了什么?感谢您的帮助

重写是一种注释,如果将其添加到非重写的方法中,则编译阶段将失败。在编译阶段之后,它没有任何实用程序,因此使用保留策略。Polimorphism在运行时发生,独立于覆盖注释。

取决于创建的类实例。。。与注释无关首先我们为什么要使用它@你不必使用它。您仍然可以在不使用注释的情况下重写方法。这只是为了编译时检查如果您使用@Override进行注释,那么您已经向编译器声明您的意图是重写一个超类方法。如果您未能使用正确的方法签名,因此实际上没有重写super的方法,那么编译器可以警告您。如果您编写的方法碰巧(可能是意外地)重写了超级方法,但没有添加
@Override
,您也会收到警告。