方法重载与方法覆盖的相同点:
1,方法名相同。
2,可以用于抽象方法与非抽象方法之间。
方法重载与方法覆盖的不同点:
1,方法覆盖要求参数类型、参数个数、参数顺序必须一致,而方法重载要求参数类型、参数个数、参数顺序至少有一项不同。
2,方法覆盖要求返回类型必须一致,而方法重载可以不同。
3,方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法。
4,方法的覆盖对方法的访问权限不能小于父类的访问权限,对抛出的异常不能超出父类的异常范围,而方法重载不做任何限制。
5,父类的一个方法只能被一个子类覆盖一次,而一个方法在所在类中可以被重载多次,包括从父类继承的方法。
下面对方法重载举例说明:
class Based{
public void get(String s,int age){
System.out.println(s+":"+age);
}
}
class Dem extends Based {
public int add(double a,int c){//add()方法可以重载多次
return (int)a+c;
}
public double add(int c,double a){//参数顺序不同,放回类型可以不同
return a+c;
}
long add(long a,long b){//参数类型不同,访问权限不受限制
return a+b;
}
public int add(int a,int b,int c){//参数个数不同
return a + b + c;
}
public void get(int age,String s){//可以重载从父类中继承来的方法
System.out.println(age+":"+s);
}
}
方法覆盖举例说明:
class Base1{
public void show(String name,int age){
System.out.println("base...method.........."+name+":"+age);
}
}
class Sub extends Base1{
public void show(String name,int age){//方法名相同,参数类型、参数个数、参数顺序相同
System.out.println("sub.....method..."+name+":"+age);
}
} |