C
attempting to use incompatible return type

解决方案 »

  1.   

    c
    有二义性当重载方法时必须有不同的参数表,B继承A重载getNumber方法时是相同的参数表出错。
      

  2.   

    C
    override只是对 相同的 方法名 相同的 返回值 对应的方法内容进行改写。
    就本例说:
    我不知道 修改了 返回值的成员方法到底是进行了重载还是进行了重新生成新方法
    如果说  是生成了 新方法 那就好理解了,继承的方法和新方法同名、同参数但是不同返回值《〈〈〈〈〈这坚决不允许的
    如果说是 重载, 可是他们根本就不“像”,怎么能叫重载呢 你说对不, 形象吧
      

  3.   

    Langhong(狼.红)  兄弟说的对,本示例代码的意思是要隐藏父亲的方法,但同时修改了返回值的类型,编译不会通过。如果字类要多态该方法,必须给予不同的参数表。
      如:
    7.  class B extends A {
    8.    public short getNumber(Integer i) {
    9.      return 2;
    10.   }
     
      就不会有歧义发生,也不会有编译问题。
      

  4.   

    kinoviti(-=K.V=-) 兄override并不只是对 相同的 方法名 相同的 返回值 对应的方法内容进行改写。
    例如:
          int x
          double y;
          int square(int x)
          {
             return x*x;
          }
          double square(double y)
          {
            return x*y;
           } 
    该方法的重载也是可以的而它们的返回值是不同的;
    而且我觉得B类在继承A类时同时也继承了A类的方法getNumber也就是说B类已经具有getNumber方法,所以在
      class B extends A {
        public short getNumber(Integer i) {
          return 2;
       }
    }
    时是对getNumber方法的重载因为它们的方法名是相同的。