如果有两个类,一个类是Person类是父类,然后有一个类是子类Student类。
Person p=new Student();
那么请问上面的这句话,在干什么?
这很明显是一个里氏转换,对吧。但是为什么要用里氏转换,你明明可以写成下面这个东西用。想用谁的方法就实例化谁
Person p =new Person();
Student S =new Student();
回到第一句话上,这句话是里氏转换,如果父类中,有一个方法是Say。子类要继承父类的方法,也是Say。然而我们上面是实例化了一个子类的对象,然后让他以父类展示出来了。那么,我如果p点方法Say,给我的一定是父类的方法,而不是子类的。如果我想用调用子类的Say方法怎么办。
多态是什么呢?
就是让一个对象展示多种状态,就是让p这个对象展示多中状态,假如我们写多个子类,写个Teacher,再写一个Driver,然后他们有不同的Say方法,那么,我通过对Person父类的Say方法重写,Student,Teacher,Driver,这个三个子类的Say方法。那么这句话就可以达到多态,以父类的对象展示,然后把不同的子类对象赋值给父类P。就实现了多态。
实现多态的三种体现就是,重写父类的方法,抽象类,接口。