多态的应用实例:二次分发
// Vehicle及其子类
public abstract class Vehicle
{
private String type;
public Vehicle( ) { }
public Vehicle(String s) { type = s; }
public abstract void drivedByFemaleDriver();
public abstract void drivedByMaleDriver();
}
public class Bus extends Vehicle {
public Bus( ) { }
public void drivedByFemaleDriver()
{ System.out.println("A female driver drives a bus."); }
public void drivedByMaleDriver()
{ System.out.println("A male driver drives a bus."); }
}
public class Car extends Vehicle {
public Car( ) { }
public void drivedByFemaleDriver()
{ System.out.println("A Female driver drives a car."); }
public void drivedByMaleDriver()
{ System.out.println("A Male driver drives a car."); }
}
// Driver 及其子类FemaleDriver和MaleDriver
public abstract class Driver {
public Driver() { }
public abstract void drives(Vehicle v );
}
public class FemaleDriver extends Driver{
public FemaleDriver( ) { }
public void drives(Vehicle v){ v.drivedByFemaleDriver(); }
}
public class MaleDriver extends Driver{
public MaleDriver( ) { }
public void drives(Vehicle v){ v.drivedByMaleDriver(); }
}
//测试代码:
public class DriverTest {
static public void main(String [ ] args) {
Driver a = new FemaleDriver( );
Driver b = new MaleDriver( );
Vehicle x = new Car( );
Vehicle y = new Bus( );
a.drives(x);
b.drives(y);
}
}
输出结果: