100天代码提升计划-第20天

多态的好处

无论右边怎么new,等号左边的调用方法不会改变 

 

 

 

二、对象向上转型

向上转型一定是安全的

package zhuanxing;

public abstract  interface animal {
    public abstract void  eat();
}
package zhuanxing;

public class dog implements animal {
    @Override
    public void eat() {
        System.out.println("狗吃骨头!");
    }
}
package zhuanxing;

public abstract class animal1 {
    public abstract  void eat();
}
package zhuanxing;

public class dog1  extends animal1{

    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}
package zhuanxing;

public class main {
    public static void main(String[] args) {
        //①使用接口进行调用
        animal animal=new dog();
        animal.eat();
        System.out.println("--------");
        //①使用方法进行调用
        animal1 animal1=new dog1();
        animal1.eat();
    }
}

 

 

三、向下转型

格式:子类名称  对象名=(子类名称)父类名称

  /*animal1.eat1();  报错的原因是因为此时的狗已经被当成了动物,不是所有的动物都吃狗粮*/
        //此时的狗需要向下【还原】,才能成为狗
        dog1 dog1=(zhuanxing.dog1)animal1;
        dog1.eat1();//此时的狗就可以吃狗粮了
 public void eat1(){
        System.out.println("狗也吃狗粮");
    }

 

posted @ 2022-03-25 22:27  软测成长者  阅读(40)  评论(0)    收藏  举报