方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写   (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。  
如:
public void test(){}
public int test(){return 0;}    这样会报错
Overloaded的方法是可以改变返回值的类型 ---?这句话如何理解?

解决方案 »

  1.   

    方法的参数个数或参数类型不改变是通不过编译的。
    所以句话可以理解为,改变参数的同时,Overloaded方法返回值也可以改变。
      

  2.   


    public void test(){} 
    public int test(int i){return 0;} 
    就是这个意思
      

  3.   

    [code=Java] public void test(){

    }
    //不改变返回类型
    public void test(int n){

    }
    //改变返回类型
    public int test(int n,String str){
    return n;
    }code]重载要参数不同,你的参数都没有,所以就出错了呗
      

  4.   

    Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法, 这就是多态性。
      

  5.   

    去看看
    http://blog.csdn.net/dreamhunter_lan/archive/2009/03/06/3962218.aspx
      

  6.   

    只是返回类型不同并不构成overload,编译都不通过。
      

  7.   

    overloading :主要针对同一个类中 两个方法只是参数不同(个数,类型,顺序),访问权限和返回类型、方法体可以是不同。
    overriding :两个类存在继承关系。子类将父类的某个方法重新实现,只限于方法体的不同。当然访问权限不可缩小。返回类型和参数必须完全相同。否则就是该方法的重载了