public class Wuling {
public void drive() {
System.out.println("驾驶五菱宏光汽车");
}
}
public class Fit {
public void drive() {
System.out.println("驾驶飞度汽车");
}
}
复制代码
驾驶员定义在此:
驾驶员定义了两个drive()方法,分别用来驾驶两辆车:
public class Driver {
public void drive( Wuling wuling ) {
wuling.drive(); // 驾驶五菱宏光的方法
}
public void drive( Fit fit ) {
fit.drive(); // 驾驶飞度的方法
}
// 用于测试功能的 main()函数
public static void main( String[] args ) {
// 实例化两辆新车
Wuling wuling = new Wuling();
Fit fit = new Fit();
// 实例化驾驶员
Driver driver = new Driver();
driver.drive( wuling ); // 帮我开五菱宏光
driver.drive( fit ); // 帮我开飞度
}
}
复制代码
public class Driver {
public void drive( Car car ) { // 方法参数使用父类来替代
car.drive();
}
public static void main( String[] args ) {
Alto alto = new Alto();
Driver driver = new Driver();
driver.drive( alto );
}
}
复制代码
public class Car implements TrafficTools {
@Override
public void drive() { }
}
public class Wuling extends Car {
public void drive() {
System.out.println("驾驶五菱宏光汽车");
}
}
public class Fit extends Car {
public void drive() {
System.out.println("驾驶飞度汽车");
}
}
public class Alto extends Car {
public void drive() {
System.out.println("驾驶奥拓汽车");
}
}
public class Donkey implements TrafficTools {
@Override
public void drive() {
System.out.println("骑一头驴");
}
}
复制代码
这个时候只要我们的驾驶员师傅也面向接口编程,就没有任何问题:
public class Driver {
// 方法参数面向接口编程
public void drive( TrafficTools trafficTools ) {
trafficTools.drive();
}
public static void main( String[] args ) {
Driver driver = new Driver();
driver.drive( new Wuling() ); // 开五菱
driver.drive( new Fit() ); // 开飞度
driver.drive( new Alto() ); // 开奥拓
driver.drive( new Donkey() ); // 骑一头驴
}
}
复制代码