一开始对多态也是半知半解的,最近又要用到多态,所以又温习了一下
多态是继承中的一种特别的
for example
class FatherClass
{
function1(){a1}
function2(){a2}
function3(){a3}
}
class SonClass extends FatherClass
{
function1(){b1} //覆盖父类方法
function2(){b2} //覆盖父类方法
function4(){xx} //新增方法
}
FatherClass fc = new SonClass(); //前后两类型不同就产生多态了(应该说是继承关系的类型,前者一定要是后面的父类)
fc.function1(); //b1功能
fc.function2(); //b2功能
fc.function3(); //a3功能
fc.function4(); //出错啦
父类对象时编译时类型,子类是运行时类型
子类继承了父类的方法,因为父类之下的子类有很多,而且各种不同,
所以子类就会去复写父类中提供的一些方法,以至于子类的方法返回结果和父类不同,
当子类的方法覆盖了父类的方法时,引用对象所指向的是子类此时的方法属性和在父类中没有被覆盖的方法,
而那些子类自己新增加的特殊方法则不体现出来.
简而言之就是多态的出现使相同父类的事务有不同的结果,从而体现出多种状态---->多态!!