在我的明白:java的向上和向下转型可以看成是类型的转换。
————————————————
版权声明:本文为CSDN博主「ldsh304」的原创文章,遵照CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:/ldsh304/java/article/details/77622245
public classPerson {public voideat(){
System.out.println("Person eatting...");
}public voidsleep() {
System.out.println("Person sleep...");
}
}public class Superman extendsPerson{public voideat() {
System.out.println("Superman eatting...");
}public voidfly() {
System.out.println("Superman fly...");
}
}
测试向上转型的主方式:
public classMain {public static voidmain(String[] args) {
Person person= newSuperman();
person.sleep();//挪用的是父类person的方式
person.eat(); //挪用的是Superman内里的eat方式,Superman重写了Person父类的方式//person.fly();//报错了,丢失了Superman类的fly方式
}
}
运行的效果:
Person sleep…
Superman eatting…
***剖析:***当在执行Person person = new Superman()时,我们来看看它的内存存储:
今后图我们可以看出 向上转型会丢失子类的新增方式,同时会保留子类重新的方式。
测试向下转型的主方式:
public classMain {public static voidmain(String[] args) {
Person person= newSuperman();
Superman s= (Superman)person; //向下转型
s.sleep();
s.fly();
s.eat();
}
}
运行的效果:
Person sleep…
Superman fly…
Superman eatting…
***剖析:***当在执行Superman s = (Superman)person;时,我们来看看他们的内存存储:
在这里我们看出 向下转型可以获得子类的所有方式(包罗父类的方式)。
原文链接:/NuoChong/p/12890812.html
本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。