【发布时间】:2013-07-26 18:54:42
【问题描述】:
这是一个新手问题。 我读到 JVM 的执行从在层次结构中的最低类中搜索方法名开始,如果该方法在该类中不可用,它会遍历父类以查找该方法。
如果是这种情况,为什么我们需要使用“@override”为继承的类添加自定义逻辑?
下面的例子说明了我的问题
class superclassA
{
method()
{
}
}
class subclassB extends superclassA
{
@Override
//While executing if JVM starts looking for the method name from the lowest hierarchy
//then why do we have to use "override" as the methodname will be matched from the lowest level itself?
method()
{
--custom subclass specific code...
}
}
【问题讨论】:
-
你不需要
@Override。它是最近才引入的(Java 1.5)并且是完全可选的。 - 它的目的是避免程序中的错误,因为它告诉编译器您实际上打算覆盖特定方法。例如,如果您输入错误的方法名称,则继承的方法不会被覆盖,这可能会导致一些讨厌的错误。使用@Override,如果带注释的方法不实际上覆盖了继承的方法,编译器至少应该警告你。 -
谢谢hanno..它解释了
-
@HannoBinder 1.5 是相当新的?到 1.5 发布时,它的发布时间超过了 1.0。
-
@TomHawtin-tackline 当然,你(几乎)是对的。实际上只有一点是 1.0、1.1、1.2 和 1.4 在没有
@Override的情况下也能正常运行,这意味着强制使用此注释将在语法上使所有为 1.5 以下的任何版本编写的程序都无效,留下“仅”1.5、1.6、和 1.7 是“兼容的”;这就是@Override是可选而不是必需的一个明显原因。