java学习日记——多态中的引用类型转换
2016-03-20 00:34
399 查看
引用类型转换:
向上类型转换(隐式/自动类型转换),是小类型到大类型的转换,不存在风险
向下类型转换,是大类型到肖类型的转换,存在风险
instanceof来解决引用对象类型的问题,避免类型转换的安全问题
样例代码:父类Animal,子类Dog省略
测试类:
从上面可以看出小类型是可以转化为大类型的,是安全的;
大类型转化为小类型则不安全。
使用instanceof来判断一个大类型对象强制转化为小类型是否会溢出,即不安全。
样例代码:
父类:
子类Dog类:
子类Cat类:
测试类:
运行结果:
有意思的类型转换,改日继续,哈哈!
向上类型转换(隐式/自动类型转换),是小类型到大类型的转换,不存在风险
向下类型转换,是大类型到肖类型的转换,存在风险
instanceof来解决引用对象类型的问题,避免类型转换的安全问题
样例代码:父类Animal,子类Dog省略
测试类:
从上面可以看出小类型是可以转化为大类型的,是安全的;
大类型转化为小类型则不安全。
使用instanceof来判断一个大类型对象强制转化为小类型是否会溢出,即不安全。
样例代码:
父类:
package com.imooc; public class Animal { public void bark() { System.out.println("I can bark!"); } }
子类Dog类:
package com.imooc; public class Dog extends Animal { public void bark() { System.out.println("I can bark as a dog"); } }
子类Cat类:
package com.imooc; public class Cat extends Animal { public void bark() { System.out.println("I can bark like as cat"); } }
测试类:
package com.imooc; public class Initial { public static void main(String[] args) { Dog obj1 = new Dog(); Animal obj2 = obj1; //小类型到大类型的类型转换 if(obj2 instanceof Dog) { Dog obj3 = (Dog)obj2; obj3.bark(); } else { System.out.println("无法转换成Dog类型"); } if(obj2 instanceof Cat) { Cat obj3 = (Cat)obj2; obj3.bark(); } else { System.out.println("无法转换成Cat类型"); } } }
运行结果:
有意思的类型转换,改日继续,哈哈!
相关文章推荐
- JAVA_SWING_ 界面风格
- xml方式实现spring的声明式事务管理及对jdbc操作的支持
- Java Web Filter登录验证
- 针对非maven模式的JAVA项目进行sonar-runner配置
- java几个小数取整例子
- java配置环境变量
- Java常用排序算法(一):插入排序
- 单例模式的设计与实现,及性能测试
- Java笔记 – 泛型 泛型方法 泛型接口 擦除 边界 通配符
- JAVA字符串格式化
- 大家一起和snailren学java-(一)对象导论
- Java并发编程之阻塞队列详解
- java中冒泡排序法
- Java增强for循环对JDK各个集合的操作
- Java反射记录总结
- Java Web高级编程(基础)
- Java Web高级编程(Spring框架)
- Java Web高级编程(持久化数据)
- 使用Spring的AOP拦截Struts2的Action时输出Json出错
- struts2通过表单提交POJO对象出错,生成的POJO类只有一个属性