多态,发生在具有继承关系的类之间,能表示事物的不同形态,所以叫多态。
产生多态的条件有三个:
第一个是要有继承,这个是最重要的
第二个是要有方法重写,这个是产生多态的原因
第三个是要有父类引用指向子类对象
当父类引用指向子类对象时候,由于编译的是父类,而实际运行的子类对象,并且将子类对象赋给父类引用,这样实际上的对象是子类,不过子类对象的堆内存存放的成员变量分为继承父类的成员变量和自己的成员变量,当通过父类引用都调用变量时候,实际指向的是子类对象的堆内存的父类成员。
但是对于成员方法来说,由于有方法重写的存在,当指向父类成员方法时候,实际上父类的方法以及被子类重写了,所以变现出来的是子类的成员方法
|
|