Java基础——对象多态性
一、定义
对象多态性:子类与父类之间的向上/向下转型。
二、对象多态性的分类
对象多态性有两种分类,向上转型(90%)和向下转型(1%)
1、向上转型:用于参数统一化(形参为父类的引用,实参为子类的对象,最终调用的方法还是看new后面的对象)
父类 父类引用 = new 子类对象();
子类对象(new出来的是对象)给了父类引用(父类引用=子类对象)
2、向下转型:当父类引用需要调用子类扩充方法时,才需要向下转型,一般不用
父类 父类引用 = new 子类();
子类 子类引用 = (子类)父类引用
要发生向下转型,必须先发生向上转型(认爹)
, 只有先向上转型,再向下转型才能成功,否则会报运行时异常:ClassCastException(类型转换异常)
三、instanceof关键字的使用
对象(obj)instanceof类(Class):表示该对象是否能对应类的一个实例所引用(返回true/false)
实际上是:看obj是否是Class的对象或其子类,当obj为Class的对象或者是其直接/间接子类,或者是其接口的实现类,结果就位true,否则先向下转型也可变为true(存在一个认爹的过程)。
子类对象是父类的一个实例——>true
父类对象不是子类的一个实例——>false