在 JDK 5.0 环境下,应该是支持自动类型转换的吧?
在这里 class B 继承 class A,并且覆写了 getNumber() 方法,为什么不能自动将返回值类型提升为 int 呢?
class A {
    public int getNumber() {
        return 1;
    }
}class B extends A {
    public short getNumber() {
        return 2;
    }
}

解决方案 »

  1.   

    不知道lz在程序中是怎么调用的,但你在B中定义了一个新的方法阿,两个方法的返回类型不同,不能算是重载
      

  2.   

    这段程序的确是不能通过编译的,但本来我就是不明白为什么。刚刚翻了翻 SCJP 的教材,发现了一小段注释:
    Overriding Methods
    • A subclass can modify behavior inherited from a parent class.
    • A subclass can create a method with different functionality than the parent's method but with the same:
    • Name
    • Return type
    • Argument list
    In J2SE version 5, the return type can be a subclass of the overridden return type.由此应该可以这么说吧,基本数据类型不属于“类”,所以在这里不能自动转型。
      

  3.   

    overridden 的时候,返回类型应该一样,就是short能转换成int也不行的!