public int ab(){
  return 1;
}
public char ab(char a){
  return 'm';
}
这种返回值类型不一样方式,算重载吗?

解决方案 »

  1.   

    5楼和6楼结合 就是正确的  建议看看java核心技术1卷 或 think in java 里关于重载的定义
      

  2.   

    补充6楼:希望各位发帖前先验证
    class Base{
    void fun(){
    System.out.println("fun in Base");
    }
    }class Derived extends Base{
    void fun(int i){
    System.out.println("fun in Derived");
    }
    public static void main (String[] args) {
    Derived d = new Derived();
    d.fun(1);
    d.fun();
    }
    }
      

  3.   


    你应该弄明白,Derived中也有一个无参的fun方法,只是没写出来!
      

  4.   

    呵呵,楼上的,这个就是重载阿,但是fun()方法在父类中,所以一般理解为继承关系的重载,只是不同人可能理解不同罢了,其实意思是一样的。就是重载
      

  5.   


    你要讨论这个问题,那么你就应该先弄清楚c++中你这套理论是不成立的。
    java支持继承关系的重载就是支持,c++不支持就是不支持,这并不是建立在你说的“有一个继承版本,再在本类中重载”这套理论支持的。
      

  6.   

    JAVA里面继承可以重载  C里面继承不能重载 只能重写(覆盖)
      

  7.   

    重载方法名一定要相同,其他的属性至少要有一个不同,就像返回值类型不同一样,就算重载。在子类与父类中,如果所有属性和方法名相同就是覆盖了。建议看看WWW.SUNXIN.ORG的孙鑫老师的JAVA 速成视频教程。速度快的很~!!!
      

  8.   

    由于java中的方法都存在内存的方法区里面,所以在发生继承关系的时候,子类和父类是公用方法去中的一个方法的。并不是子类继承来的方法也有独立的内存,所以子类是可以对父类中的方法进行重载的。