多态概述
同一个对象,在不同时刻表现出来的不同形态
举例:猫
我们可以说猫是猫:猫 cat = new 猫();
我们也可以说猫是动物:动物 animal = new 猫();
这里猫在不同的时刻表现出来了不同的形态,这就是多态
多态的前提
- 构造方法:同继承一样,子类会通过super访问父类构造方法
- 成员变量:编译看左边(父类),执行看左边(父类)
- 成员方法:编译看左边(父类),执行看右边(子类)
为什么成员变量和成员方法的访问不一样呢?
-
多态的好处和弊端
多态的好处:提高了程序的扩展性
- 具体体现:定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的任意子类对象
-
多态中的转型
向上转型
- 从子到父
- 父类引用指向子类对象
向下转型
概述:如果被转的引用类型变量,对应的实际类型和目标类型不是同一种类型,那么在转换的时候就会出现ClassCastException
避免强转出现的问题
- 关键字 instanceof
- 使用格式:
- 变量名 instanceof 类型
- 判断关键字左边的变量,是否是右边的类型,返回boolean类型结果