多态的转型,向上向下转型day09

向上转型(Upcasting)是指将子类的引用赋值给父类类型的引用。换句话说,就是用父类类型的变量来引用子类对象。这种转换是自动的,不需要进行强制类型转换。
    语句定义格式:
         父类类型 引用名 = new 子类类型();

    多态访问成员方法的弊端:
        多态的形式下,无法调用子类中特有的方法。

    解决方案:向下转型。
    语句定义格式:
        子类的类型 对象名 = (子类的类型)父类的变量;

向下转型的理解
曹操和曹植的故事,曹操是曹植的父亲,曹植是曹操的儿子
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();
posted @ 2024-08-05 20:50  ていせい  阅读(7)  评论(0编辑  收藏  举报