面向对象--多态--对向下转型的理解

对多态向下转型的理解:

伪代码举例

存在多态的前提:(缺一不可)

        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();
posted @ 2021-12-11 20:46  赤兔胭脂小吕布  阅读(36)  评论(0编辑  收藏  举报