一、向上转型
简单的说向.上转型就是:将-一个子类类型的对象赋值给- -个父类类型的变量,
基本的实现语法:
父类类型变量=new 子 类类型();
DEMO:向上转型
发现了可以使用父类类型的变量调用子类覆写了父类的方法,但是为什么不调用Worker的say()方法呢?原因是具体调用哪一个子类覆写的方法是在运行期间根据具体你赋值的子类来确定的。
思考:在之前我们说过,子类出了可以继承父类的成员方法和变量还可以扩充属于自己的新的操作,那么可以使用父类类型的变量调用子类新扩充的方法吗?
DEMO:调用子类新扩充的方法
发现了不能使用父类类型的变量调用子类新扩充的方法,如果要实现调用可以使用向下转型。将一个父类类型的变量强制转换为子类类型。具体的实现语法:
但是向下转型会存在风险,存在类型转换异常的风险。
二:向下转型
简单的说向上转型就是:将一个父类类型的变量强制转换为子类类型。具体的实现语法:
DEMO:向下转型
发现了实现向下转型必须先向,上转型,但是向下转型作用不大,只是作为知识点提出,向下转型还存在类型转换异常的风险。
向下转型用得不多,你知道这个概念就行,但是你要记住这个异常(ClassCastException)。其实也可以在代码中防止这样的异常。
DEMO:防止异常的出现
虽然可以使用instanceof关键字防止类型转换异常的出现,但是没事干别向下转型。
有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!
欢迎关注微信公众号:码邦主