使用类的继承和接口实现多态举例
2.1.1 源代码
abstract class Vehicle //交通车辆抽象类 { abstract void consume();//使用能源 } interface fare //费用接口 { void charge(); //收费 } class Bus extends Vehicle implements fare //公共汽车 { @Override void consume() //实现抽象类的抽象方法 { System.out.println("此公交使用电力驱动"); } @Override public void charge() //实现接口的抽象方法 { System.out.println("此公交收费1元/人"); } } public class TestBus { public static void main(String[] args) { Bus bus = new Bus(); bus.consume(); bus.charge(); } }
2.1.2 运行结果
2.2.1 源代码
abstract class Animal //定义抽象类 { String name; int age; abstract public void cry(); //定义抽象方法,动物会叫 } /*class Animal //定义基类 { String name; int age; public void cry() { System.out.println("动物会叫"); } }*/ class Dog extends Animal //定义子类Dog,继承先后向类Animal { @Override public void cry() //实现父类cry()方法 { System.out.println("汪汪叫..."); } } class Cat extends Animal //定义子类Cat,继承抽象类Animal { @Override public void cry() //实现父类cry()方法 { System.out.println("喵喵叫..."); } } public class AnimalCry { public static void main(String[] args) { Dog dog = new Dog(); dog.cry(); //调用子类方法,不会产生歧义,强耦合 Cat cat = new Cat(); cat.cry(); //调用子类方法,不会产生歧义,强耦合 System.out.println("......"); //后期动态绑定:根据对象类型选择相应的方法 Animal ani1 = new Dog(); //向上转型安全 ani1.cry(); Animal ani2 = new Cat(); 向上转型安全 ani2.cry(); } }
2.2.2 运行结果