`
mshijie
  • 浏览: 96105 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

@Override的在1.5和1.6中的不同含义

    博客分类:
  • Java
阅读更多

今天在用ant编译的时候遇到一个问题,老是提示 @Override错误 方法未覆盖其父类的方法。在eclipse中都能正确编译的。一整鼓捣之后发现,path设置的问题,ant使用的是jdk1.5编译,在eclipse 中使用的是jdk1.6,编译的。问题就来了。才发现,@Overrride注解在1.5和1.6中含义竟然不相同。
如下面的代码:

public interface SomeInterface{
    public void methodTwo();
}

public class Base{
    public void methodOne(){
    }  
}

public class Sub extends Base implements SomeInterface{
    @Override
    public void methodOne(){
    }  
    @Override
    public void methodTwo2(){
    }
}
 


使 用JDK1.6编译没有问题,使用JDK1.5编译,会报@Override方法未覆盖其父类的方法。实际上这个方法是类实现的接口中方法,但是,这个语 法的jdk1.6的下面是可以通过的,也就是说jdk1.6认为类覆盖父类方法与实现接口方法都叫override,而jdk1.5不是这样认为的,不知 道这是当初jdk1.5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都 可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk1.6的支持这个功能就可以看出。

分享到:
评论

相关推荐

    CSharp Language Specification(微软官方C#语言规范)

    - **重写方法** 通过在派生类中使用 `override` 关键字来实现对基类方法的重写。 - **抽象方法** 在抽象类中声明,没有方法体,必须在派生类中实现。 **1.6.6.5 方法重载** - 方法重载允许在同一个类中定义多个同名...

    一个优秀的ASP.NET(及WinForm)开发人员需要知道

    Debug.WriteLine 和 Trace.WriteLine 用于输出调试信息,但前者只在调试模式下有效,而后者在生产环境中也可以使用。 **3.13 Debug Build 与 Release Build 的差异** Debug Build 包含调试信息,而 Release Build ...

    csharp

    通过提供不同的参数列表,可以在同一个类中定义多个同名的方法。例如: ```csharp class MyClass { public void Method(int x) { } public void Method(string s) { } } ``` ##### 1.6.7 其他功能成员 ###### ...

    java实用教程

    - **定义**:Java Applet是一种在浏览器中运行的小程序。 - **创建过程**: 1. 编写Applet类,继承自`java.applet.Applet`。 2. 实现`paint`方法来绘制图形。 3. 编译并嵌入HTML页面中。 **1.7 什么是JSP** - *...

    java面试宝典.docx

    - **Overload**: 方法重载,允许在同一类中定义多个同名方法,但参数列表不同。 - **Override**: 方法覆盖,子类重新定义父类中的方法,必须保持方法签名一致。 - **Overloaded的方法是否可以改变返回值类型?**: 不...

    Java面试宝典.doc

    - **解释**: 一个在字符串常量池中,另一个是在堆内存中通过`new`关键字创建。 **1.33 String与StringBuffer的区别** - **String**: 不可变,每次修改都会创建新的对象。 - **StringBuffer**: 可变,可以在原有对象...

    java面试宝典

    - **应用**: 在可能发生异常的地方使用`try`块,在`catch`块中处理异常,在`finally`块中释放资源。 **1.44 常见的runtime exception** - **常见类型**: `NullPointerException`, `ArrayIndexOutOfBoundsException`...

    新版Android开发教程.rar

    也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...

    C#3.0语言规范!!

    方法重载允许在一个类中拥有相同名称但参数列表不同的多个方法。例如: ```csharp public class Calculator { public int Add(int x, int y) { return x + y; } public double Add(double x, double y) { ...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    IDesign C#编程规范

    **2.42 类和接口中方法和属性的比例至少是2:1** - 类中的方法数量应多于属性数量,以确保良好的封装。 **2.43 避免使用一个成员的接口** - 接口中应包含多个成员,避免使用只有一个成员的接口。 **2.44 努力使每...

Global site tag (gtag.js) - Google Analytics