对多态向下转型的理解:
伪代码举例
存在多态的前提:(缺一不可)
1、要有继承关系
2、要有方法重写
3、要有父类的引用指向子类对象
class 曹操{
int age = 50;
public void fight(){
System.out.println("赤壁之战")
}
}
class 曹植 extends 曹操{
int age = 28;
public void fight(){
System.out.println("习武练习");
}
public void xieShi(){
System.out.println("写诗,习惯将名字写在诗的尾部");
}
}
某一天,要发生赤壁之战,曹操拉肚子了,临时战场上没有人指挥,曹植看到了
他立刻换上父亲的衣服,贴上假胡子,假扮父亲上战场指挥。
//这种现象,叫向上转型,多态的引用
曹操 c = new 曹植();
c.fight(); // "习武练习"
//一旦写诗就暴漏了
//c.xieShi();
这时候,曹操上完厕所了回来,告知曹植说我回来了。
这时候曹植脱下父亲的衣服,撕掉假扮的胡子,回到自己的身份
//这个现象叫做向下转型
曹植 c2 = (曹植)c;
c.fight();
//这时候就可以写诗了
c.xieShi();