Java 向上和向下转型
2016-03-29 13:39
459 查看
转型是基于继承的。
如果父类指向的就是子类,则转型安全;如果不是,会在运行时报错,java.lang.ClassCastException错误。可以使用instanceof来避免出错此类错误。
把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。
如Father father = new Son();
把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。
如father就是一个指向子类对象的父类引用,把father赋给子类引用son 即Son son =(Son)father;
其中father前面的(Son)必须添加,进行强制转换。
upcasting 会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效
向上转型的作用,减少重复代码,父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象编程思想
向上转型
把子类转换成父类,不需要强制转换,则转型后不能访问子类特有的属性和方法,如果子类方法被重写,则根据动态绑定,父类调用子类同名方法时,重写生效,这里可以体现出多态。向下转型
父类转换成子类,需要强制转换。如果父类指向的就是子类,则转型安全;如果不是,会在运行时报错,java.lang.ClassCastException错误。可以使用instanceof来避免出错此类错误。
总结
父类引用可以指向子类对象,子类引用不能指向父类对象。把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。
如Father father = new Son();
把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。
如father就是一个指向子类对象的父类引用,把father赋给子类引用son 即Son son =(Son)father;
其中father前面的(Son)必须添加,进行强制转换。
upcasting 会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效
向上转型的作用,减少重复代码,父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象编程思想
相关文章推荐
- JAVA正则表达式及常用类
- java实现SVN检出功能源码
- springMVC json自动将date类型转换为long
- JAVA多线程实现和应用总结
- 老版本JDK官网下载方式
- 细谈struts2(十四)struts2+ajax实现异步验证
- 细谈struts2(十三)struts2实现文件上传和下载详解
- 细谈struts2(十二)struts2国际化底层大揭秘
- 细谈struts2(十一)OGNL表达式的基本语法和用法
- Eclipse连接虚拟机数据库IO接口错误问题
- Eclipse连接虚拟机数据库IO接口错误问题
- 细谈struts2(十)ognl概念和原理详解
- 细谈struts2(九)内置拦截器和自定义拦截器详解(附源码)
- java读取文件和写入文件的方式
- 细谈struts2(八)拦截器的实现原理及源码剖析
- 细谈struts2(七)数据类型转换详解
- Maven编译jdk版本设置
- 细谈struts2(六)获取servletAPI和封装表单数据
- 细谈struts2(五)action基础知识和数据校验
- 细谈struts2(四)struts2中action执行流程和源码分析