package com.neal.day1004;
/**
* 有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量
* 声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。子类特有的属性和方法
* 不能调用
*
* 如何才能调用子类特有的属性和方法?
* 使用强制类型转换符,向下转型:使用强制类型转换符
* Man m1 = (Man)p2;
*
* 使用强转时,可能出先ClassException的异常
*
* instanceof关键字的使用
*
* a instanceof A: 判断对象a时否是类A的实例。如果是,返回true;如果不是,返回false
*
* 使用情景:为了避免在向下转型时出现ClassCaseException的异常,我们在向下转型之前,先
* 进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型
*
* 如果a instanceof A返回true,则 a instanceof B也返回true。
* 其中,类B时类A的父类。
* 不相关的两个类是无法赋值的
*/
public class Person {
}
100421-向下转型
本文详细介绍了Java中多态性的概念,解释了为什么父类引用指向子类对象时只能调用父类的方法和属性。同时,强调了强制类型转换在调用子类特有属性和方法时的重要性。文章还提到了使用instanceof关键字来避免在向下转型时可能出现的ClassCastException,以及其应用场景和规则。通过实例展示了如何正确地利用这些机制来实现更灵活的代码设计。

被折叠的 条评论
为什么被折叠?



