Java之向上转型,向下转型简单理解和实例

2017-01-13 15:02:14来源:csdn作者:huangwenyi1010人点击

第七城市
开心一笑

【我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我什么也不要,只要你走的时候别忘了带上我就行。】

提出问题

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向上转型与向下转型

读书感悟

来自《浮生六记》沈复


越是不见,越是想见。越是想见,越是不敢。
情之所钟,虽丑不嫌。
从此扰扰攘攘,又不知梦醒何时耳。
你的过去我来不及参与,你的未来我不会再错过。 归纳起来不外乎四个字: 相见恨晚。
我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我 什么也不要,只要你走的时候别忘了带上我就行。”
其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!


第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台