天天看点

Java基础——对象多态性

Java基础——对象多态性

一、定义

 对象多态性:子类与父类之间的向上/向下转型。

二、对象多态性的分类

 对象多态性有两种分类,向上转型(90%)和向下转型(1%)

  1、向上转型:用于参数统一化(形参为父类的引用,实参为子类的对象,最终调用的方法还是看new后面的对象)

   父类 父类引用 = new 子类对象();

   子类对象(new出来的是对象)给了父类引用(父类引用=子类对象)

 2、向下转型:当父类引用需要调用子类扩充方法时,才需要向下转型,一般不用

   父类 父类引用 = new 子类();

   子类 子类引用 = (子类)父类引用

  

要发生向下转型,必须先发生向上转型(认爹)

, 只有先向上转型,再向下转型才能成功,否则会报运行时异常:ClassCastException(类型转换异常)

Java基础——对象多态性

三、instanceof关键字的使用

 对象(obj)instanceof类(Class):表示该对象是否能对应类的一个实例所引用(返回true/false)

 实际上是:看obj是否是Class的对象或其子类,当obj为Class的对象或者是其直接/间接子类,或者是其接口的实现类,结果就位true,否则先向下转型也可变为true(存在一个认爹的过程)。

Java基础——对象多态性

  子类对象是父类的一个实例——>true

  父类对象不是子类的一个实例——>false

四、向上向下转型与instanceof的关系

继续阅读