1.理解:
(1)父类型的引用存储不同子类型的对象
父类类名引用名= new 子类类名();
引用
对象
父类型
子类型
(2)以父类型的引用调用属性和方法时,只能调用父类中定义的﹣>编译过程检测
(3)运行过程, jvm 自动检测子类是否覆盖父类中的方法,如果覆盖了,则优先调用子类覆盖后的方法
2.引用之间的转换:
(1)父类型的引用赋值给子类型的引用,需要强制类型转换
大类型
小类型
a .如果实际存储的对象类型和转换的类型一
致,编译通过,运行通过
b .如果实际存储的对象类型和转换的类型不一致,编译通过,运行报错,错误信息为:
java . lang . ClassCastException (类型转换异常)
(2)子类型的引用赋值给父类型的引用,直接赋值即可
(3)如果没有继承关系的双方,不允许强制类型转换,编译报错
3.利用 instanceof 避免类型转换异常
(1)语法:引用名 instanceof 类名
(2)应用:判断引用中存储的实际对象类型是否兼容于后面的类型,兼容﹣ true ;不兼容﹣ false (兼容,是不是后面的一种)