- 重载(overload):是指在同一个类中,多个方法拥有相同的方法名,但参数列表必须
不同(参数个数或参数类型或参数次序不同)。
方法重载与修饰符、返回类型无关,可以相同,可以不同。
class Animal{
public int add(int a,int b){
System.out.println("add(int a,int b)");
return a + b;
}
public double add(double a,double b){
System.out.println("add(double a,double b)");
return a + b;
} }
- 重写(override):是指子类继承父类,子类对父类的方法进行重新编写,但方法名、
参数列表与返回类型必须一致,方法体不同。
class Animal{
public int getAge(){
return age;
} }
class Dog extends Animal{
public int getAge(){
System.out.println("子类中的getAge()....");
return age;
} }
注:(1)声明为static和final的方法不能被重写;
(2)构造方法不能被重写;
(3)不能被继承的方法也不能被重写;
(4)调用父类中的原方法时使用 super.方法名()。
- 区别:
1. 返回类型不能作为区别重载与重写的标准。
2. 访问修饰符的限制必须大于被重写方法的修饰符;而重载可以是任意的修饰符。
3. 重写方法不能抛出新的检查型异常,也不能抛出比父类更宽泛的检查型异常;
而重载可以抛出任意的异常。