多态是Java的核心机制,总计就是父类的引用指向子类的对象,但是父类的引用不能使用
- 关于多态的几个概念:
- 向上转型(upcasting):子类型-->父类型,又被称为自动类型转换
- 向下转型(downcasting):父类型-->子类型,又被称为强制类型转换(需要添加转换符)
- 无论是向上转型还是向下转型,两种类型之间都必须要有继承关系,没有继承关系编译不会通过
- 多态中的一个著名异常:*java.lang.ClassCastException(类转换异常)*;
- i、该异常只又在强制类型转换时才会发生,也就是说“向下转型”存在隐患(编译过了,但是运行错误)
- ii、向上转型只要编译过来,运行就不会出错
- iii、如何避免向下转型出现的这种错误:
- 使用instanceof运算符来避免
- iv、关于instanceof运算符:
- 语法格式
(引用 instanceof 数据类型名)
以上运行结果是布尔类型:
例如:(a instanceof Animal)
结果为true,表示引用a指向的对象是一个Animal类型;
结果为false,表示引用a指向的不是;
所以,在进行强制类型转换时,建议使用instanceof来进行判断
- 多态的作用
- 降低程序的耦合度(解耦合),提高程序的扩展力
- 能使用多态就使用多态
- 父类型引用指向子类型