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("狗也吃狗粮"); }


浙公网安备 33010602011771号