1、重载:
1)是指方法名一样,参数不同的几个方法,它们的功能相近;
2)调用的时候是根据调用“参数的类型”来识别方法。
2、重写(也是方法的覆盖)
1)是子类中修改父类中方法的方法;
2)在子类型中定义,与父类型中的方法名和参数都一样的方法;
3)在调用是,是根据“对象的类型”来调用相应的方法。
举个例子:
public class Demo08 {
public static void main(String[] args) {
Super obj=new Sub();//这里的Super是obj的类型,而Sub是对象
Coo t=new Coo();
t.t(obj);//根据obj的类型Super调用重载方法
}
}
class Coo{
public void t(Super obj){//重载的方法
System.out.print("C");
obj.t();//调用重写的方法
}
public void t(Sub obj){
System.out.print("S");
obj.t();
}
}
class Super{
public void t(){
System.out.print("A");
}
}
class Sub extends Super{
public void t(){
System.out.print("D");
}
}
首先,Super obj=new Sub();这里的Super是obj的类型,而Sub是对象,之后运行到t.t(obj);时,因为obj的类型是Super类型的,所以调用的是Coo类下的 public void t(Super obj)方法,输出C,接着执行obj.t()语句,又因为obj的对象是Sub类型的,所以执行的是class Sub extends Super下的语句,输出D。
在这里,若对象的类型改为Super类型的,则最后输出的是CA。