【我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我什么也不要,只要你走的时候别忘了带上我就行。】
大家好,我录制的视频《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向上转型与向下转型
来自《浮生六记》沈复
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!