一、多态:
在程序运行之前:
1.无法知道自己创建的对象会调用那个方法
在程序运行之后:
1.可以知道自己创建的对象所调用的方法
2.程序运行过程中可以动态改变调用的方法
二、重载和重写:
子类继承父类,重载父类方法--------子类重写的方法与父类的方法只存在传入参数的差别.
如:
父类方法
public class Father(){
public void write(){
System.out.println("我是父类方法");
}
public void read(){
System.out.println("我是父类读取");
}
}
子类方法
public class Son extend Father(){
@Overload
public void write(String Name){
System.out.println("我是子类重载"+Name);
}
@Override
public void read (){
System.out.println("我是子类读取");
}
}
在调用的时候可以使用
Father() f = new Son();//向上转型,f可以调用父类所有方法,但不可以调用子类拥有的属性和方法.
f.write();
f.read();
结果是:
我是父类方法
我是子类读取
因为父类只能调用父类有的方法和类型,如果子类重载了父类方法,那么重载的方法就属于子类,所以父类无权调用.
重写方法可以理解为父亲的房子里面放了儿子的床和父亲的床,所以在儿子睡觉的时候还是睡自己的床,而不是父亲的床.
三、总结:
重载的方法于父类的方法名相同但是形参个数或者类型不同,返回类型是否相同不是区分重载的标准
重写是重写父类方法中的具体实现,本省方法名和形参列表没有变化.