java关于函数重载(overload)和函数覆盖(override)区别

作者: java 发布时间: 2017-06-23 浏览: 2811 次 编辑

重载(Overload):在类中多个同名函数同时存在,具有不同的参数个数/类型。方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。

特点:与返回值类型无关,只看参数列表。

优点:方便阅读,优化设计。

注意:不能有两个名字相同,参数类型,参数个数也相同却返回不同类型值的函数。

public class A{
    //show方法被重载
   public void show(){
   }
    //show方法被重载
   public void show(int a){
   }
}

函数覆盖(override):出现在继承的关系中,子类中出现了与父类一模一样的方法时,会有覆盖操作。

特点:(1)静态函数只能覆盖静态函数;

(2)覆盖时,子类方法权限一定要大于父类方法权限;

(3)不能抛出新的异常,或者父异常。

应用情景:当子类需要父类功能,而功能主体子类有自己特有功能时,可以复写父类中的方法,这样既包括了父类的功能,又定义了子类特有的功能。

public class A{
   public void show(){
      System.out.println("A");
   }
}
public class B extends A{
    //子类B重写了父类A的show方法
   public void show(){
      System.out.println("B");
   }
}