多态访问成员方法的弊端:
多态的形式下,无法调用子类中特有的方法。
解决方案:向下转型。
语句定义格式:
子类的类型 对象名 = (子类的类型)父类的变量;
向下转型的理解
曹操和曹植的故事,曹操是曹植的父亲,曹植是曹操的儿子
class 曹操{
public void skill(){
带兵打仗
}
}
class 曹植 extends 曹操{
@Override
public void skill(){
下棋
}
public void zuoShi(){
作诗
}
}
某一天,曹操带兵打仗出城了,城里只有曹植,这时候刘备待人过来攻打城池,但是小兵只听曹操的指令。
为了守护城池,曹植想到一个办法,装爹,粘上胡子,穿上爹的衣服,调用跟爹一样的skill方法。
//向上转型
曹操 c1 = new 曹植();
c1.skill();
// c1.zuoShi(); 不能调用
曹操打仗回来了,曹植看到父亲回来后,不用继续装爹,做回自己,脱掉爹的衣服,撕掉假胡子
//向下转型
曹植 c2 = (曹植) c1;
c2.skill();
c2.zuoShi();
标签:day09,曹操,转型,多态,曹植,skill,c1
From: https://www.cnblogs.com/qiwei-bigdata/p/18344029