*****instanceof和类型转换*****难点,多看笔记
判断类型是否相似
instanceof:判断左边对象是否是右边类的一个实例。如图
说明如下图
注意
instanceof两边至少要有一定联系才行,否则就会报错,如下图
Person类的对象person和String无任何联系,Student类的对象student很明显和String、Teacher无任何联系,直接报错了
类型转换
问题解决
父类转子类
父类无法直接调用子类的独有方法
如图转换后无法执行Student类里的go方法,如何解决呢?
将这个对象转换为Student类就可以使用Student类里边的go方法了
如图很明显要将Person类对象转换为Student类,属于高转低,要强制转换
如上图所示,可以使用Student类里边的go方法了,因为此刻的student已经是属于Student类了
或者如下图这样转化
子类转父类
子类转换为父类,会丢失掉自己本身的一些方法
如图将子类Student类对象student转换为父类Person类对象person,Student类的go方法就没法用了
总结
1.父类不能直接调用子类的方法,要先类型转换后才能调用,也就是向下转换
如上图,即为将父类Person转换为子类Student,然后父类的对象才能调用子类方法
2.子类转换为父类子类的一些方法就不能用了
***总而言之***
因为继承,子类内容包括父类内容且包括父类没有的内容,即独有方法,所以子变父需要砍去部分内容,即自身独有的方法,而父变子类需要开辟只属于子类的部分空间,即独有方法,所以需要强制转换
类型转换意义
方便方法的调用,不用重新new类,直接给类降级或者升级就可以调用它的方法了