java:使用@Override,下面调用一个父类的方法,是不是就将原来的父类覆盖了?

但覆盖之后是否保留父类的实例??... 但覆盖之后是否保留父类的实例?? 展开
 我来答
沽名晓飞
推荐于2017-10-07 · TA获得超过1507个赞
知道小有建树答主
回答量:100
采纳率:100%
帮助的人:88.4万
展开全部

@Override,标示方法重写的注解,JDK 1.5添加到java.lang包中。该注解作用于方法上,表示该方法是对父类方法的重写。


JDK 1.5推出注解后,Java.lang包中添加了@Override,注解源码很简单:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

由源码可以知道,这个注解是作用在方法级别的,作用域是源码级别,也就是在编译的时候这个注解会被解析,在运行时会被丢弃。


标记了该注解表示注解的方法是重写的父类的,因此编译器会在编译阶段检查方法签名,如果在父类中未发现同样的方法(指的是方法签名),编译器会抛出编译错误。在JDK 1.5之前子类重写父类方法都是人为保证的,有了该注解,可以提供两方面好处:

(1)能保证子类确实重写了父类方法,避免出现因为拼写等原因造成的人为重写失败,比如

子类A重写了方法service,但是由于不小心写成了services,这样编译不会发生错误,运行时调用的是父类的service,错误难以查出。

(2)通过源码就可以知道该方法是被重写过的,方便开发。


在JDK 1.5中,该注解声明的方法必须是重写的父类方法,不能是接口方法。JDK 1.6允许对接口的实现方法添加这个注解。

江湖人称王嘉嘉
2015-08-03 · TA获得超过1400个赞
知道小有建树答主
回答量:1047
采纳率:83%
帮助的人:609万
展开全部
实例会保留的,这个注解的目的是为了在编译时校验你是否正确override了父类的方法,当父类没有这个方法时,编译器会告诉你编译错误。运行时时没有影响的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式