Java之向上转型,向下转型简单理解和实例
2016-11-26 22:08
513 查看
开心一笑
【我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我什么也不要,只要你走的时候别忘了带上我就行。】视频教程
大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……视频地址:http://edu.csdn.net/lecturer/994
提出问题
java中的向上转型,向下转型简单理解???解决问题
转型基础:有继承关系。向上转型(upcasting):将子类对象转为父类对象。父类对象可以是接口。(儿子当爸爸)向上转型时,子类的新有的方法都会遗失掉。
向下转型(downcasting):父类引用的对象转换为子类类型,需要强转。(爸爸当儿子)
女神类:
/** * 描述:女神 * @author Ay * */ class Girl extends Person{ public Girl(){}; public Girl(String name){ super(name); }; public Girl(String id,String name){ super(id, name); } public void dress(){ System.out.println("Girl" + "打扮......"); } public static void birth(){ System.out.println("Girl" + "降临人世间......"); } public static void die(){ System.out.println("Girl" + "走向人间天堂......"); } }
Person类:
/** * 描述:人类 * @author Ay * */ class Person extends Object{ protected String UNIQUE_FLAG = "Person"; public Person(){ System.out.println("Person created......"); }; public Person(String id,String name){ super(id,name); } public Person(String name){ super(name); } public static void birth(){ System.out.println("降临人世间......"); } public static void die(){ System.out.println("走向人间天堂......"); } }
测试类:
public class AyTest { public static void main(String[] args){ Person person = new Person(); //向上转型 Person girl = new Girl(); girl.birth(); //报错,向上转型子类的新有的方法都会遗失掉 //girl.dress(); //第一种:向下转型 Girl downCastingGril = (Girl)girl; //女孩呼吸 正常运行 downCastingGril.breath(); //女孩打扮,正常运行 downCastingGril.dress(); //这里运行就会报错,报ClassCastException异常 Girl errorGirl = (Girl)person; //运行错误 errorGirl.breath(); //运行错误 errorGirl.dress(); } }
运行结果:
Person created...... Person created...... 降临人世间...... Person呼吸...... Girl打扮...... Exception in thread "main" java.lang.ClassCastException: com.evada.de.Person cannot be cast to com.evada.de.Girl at com.evada.de.AyTest.main(AyTest.java:27)
向上转型,静态绑定
public class AyTest { public static void main(String[] args){ Person person = new Person(); //向上转型 Person girl = new Girl(); //这里是静态绑定,打印结果是:降临人世间...... 而不是 Girl降临人世间...... girl.birth(); } }
打印结果:
Person created...... Person created...... 降临人世间......
向上转型,动态绑定
就是正常的动态绑定,可参考:Java之前期绑定,后期绑定,简单理解和实例参考文章
【1】java向上转型和向下转型【2】Java入门记(二):向上转型与向下转型
【3】Java编程思想(Thinking in Java)
【4】java向上转型与向下转型
读书感悟
来自《浮生六记》沈复越是不见,越是想见。越是想见,越是不敢。
情之所钟,虽丑不嫌。
从此扰扰攘攘,又不知梦醒何时耳。
你的过去我来不及参与,你的未来我不会再错过。 归纳起来不外乎四个字: 相见恨晚。
我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我 什么也不要,只要你走的时候别忘了带上我就行。”
其他
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!相关文章推荐
- Java 转型(向上或向下转型)详解及简单实例
- 理解java中向上向下转型(java多态原理)
- java基础:对象的向上转型/向下转型; 基本类型的 向上转型/向下转型实例(窄化)
- JAVA基础知识再学习(5)理解多态&向上转型&向下转型
- 七、java向上转型和向下转型的理解
- 理解“向上转型”和“向下转型”的简单例子
- Java中的向下转型和向上转型理解
- JAVA中的向下转型(downcasting)及泛型与向上转型(upcasting)及RTTI、反射机制
- Java转型(向上或向下转型)
- 【Java基础】——变量向上转型后的实例变量与方法的访问
- Java向上转型与向下转型
- java 向上转型和向下转型
- Java多态(利用向上向下转型和反射机理)
- Java向上转型与向下转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- java中向上转型(upcast)和向下转型(downcast)
- java向上转型 向下转型(upcasting downcasting)
- Java 向上转型和向下转型
- (Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解