1.多态的前提条件
第一点和第二点都很好理解,第三点父类引用指向子类对象是什么意思?以下图进行讲解
我们以前的写法,如下图,叫做子类引用指向子类
那父类引用呢?就是把左边换成父类Animal即可
因为dog和cat都是Animal的子类,所以二者皆可用该种引用方式
并不是所有的对象都可以左右两边类型不一致来创建 如下图
因为dog不是cat的父类,不是父类引用指向子类对象,就不能用多态的方式来创建对象,要想两边类型不一致,左边就必须是父类,右边是子类
2.多态的两种现象
1.对象多态
像上图这种创建对象的方式,我们称为对象多态
对象多态的好处在于形参,如果一个方法中形参是父类,那么我们在调用该方法时,括号里面就可以放入任意的子类
实参给形参赋值,就相当于普通的变量赋值
这样我们就可以通过一个父类使用到很多的子类,大大减少了代码的臃肿
对象多态,直接创建对象的意义不大,主要好处体现在调用方法传参
2.行为多态
可以根据父类引用的是哪个子类,而调用子类中的方法
这里先让Animal接收dog对象,这时eat()就会打印dog类的方法。Animal接收cat对象,打印的也就是猫吃鱼