四、使用多态示例
飞行器接口 :
public interface Aircraft { public void takeOff(); public void land(); }
直升飞机 :
public class Helicopter implements Aircraft { @Override public void takeOff() { System.out.println("直升飞机 起飞"); } @Override public void land() { System.out.println("直升飞机 降落"); } }
运输机 :
public class TransportPlane implements Aircraft { @Override public void takeOff() { System.out.println("运输机 起飞"); } @Override public void land() { System.out.println("运输机 降落"); } }
客户端类 :
public class Client { public static void main(String[] args) { Client client = new Client(); Aircraft aircraft1 = new Helicopter(); Aircraft aircraft2 = new TransportPlane(); client.doFly(aircraft1); client.doFly(aircraft2); } private void doFly(Aircraft aircraft) { aircraft.takeOff(); System.out.println("飞行"); aircraft.land(); } }
执行结果 :
添加战斗机类 , Client 中的相关方法不用修改 ;
添加的战斗机类 :
public class Fighter implements Aircraft { @Override public void takeOff() { System.out.println("战斗机 起飞"); } @Override public void land() { System.out.println("战斗机 降落"); } }
修改后的客户端类 :
public class Client { public static void main(String[] args) { Client client = new Client(); Aircraft aircraft1 = new Helicopter(); Aircraft aircraft2 = new TransportPlane(); Aircraft aircraft3 = new Fighter(); client.doFly(aircraft1); client.doFly(aircraft2); client.doFly(aircraft3); } private void doFly(Aircraft aircraft) { aircraft.takeOff(); System.out.println("飞行"); aircraft.land(); } }
执行结果 :
总结
多态作用 : 提升程序扩展性 ;
多态 3 33 种表现 : ① 子类 重写 父类方法 ; ② 相同方法名 不同参数 的 方法 重载 ; ③ 父类引用 指向 子类对象 ;
多态发生 3 33 条件 : ① 子类 继承 ( 实现 ) 父类 ; ② 父类引用 指向 子类对象 ; ③ 子类 重写 父类方法 ;