Java6的@override注解与Java5差别之处[Java编程]
本文“Java6的@override注解与Java5差别之处[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
首先看一下下面的示例代码 :
Parent.java
public class Parent...{
public void parentMethod() ...{
}
}
IChild.java
public interface IChild ...{
void interfaceMethod();
}
Child.java
public class Child extends Parent implements IChild ...{
@Override
public void parentMethod() ...{
}
@Override
public void interfaceMethod() ...{
}
}
由于代码很简单,我就不做阐明
上述代码在jdk6下可以编译通过
而在jdk5下编译无法通过,输出的错误信息以下:
Child.java:7: 办法未覆盖其父类的办法
@Override
^
1 错误
上面的错误信息说在Child.java第七行的Override注解是不对的,不对的缘由是该办法(interfaceMethod)不是父类办法.
当然,实际上这个办法是类实现的接口中办法,但是,这个语法的jdk6的下面是可以通过的,也就是说java6认为类覆盖父类办法与实现接口办法都叫override,而jdk5不是这样认为的,不知道这是当初jdk5的bug,还是当初就是认为覆盖父类办法与实现接口办法是不一样的,不得而知.但是从OO角度来看,覆盖父类办法与实现接口办法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方法.这从jdk6的支持这个功效便可以看出.
差一点忘了:
尺度的java api文档java5与java6对Override annotation的的注释一样的
java5:
Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.
java6:
Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.
两段阐明一模一样,让人搞不清楚的是java6文档没有提到Override对interface的支持.
以上是“Java6的@override注解与Java5差别之处[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |