java 多态的深入理解

简单来说 :

多态 能够很好的解决代码耦合性的问题

考虑这样一个场景

有个 买了辆捷达汽车 .这个系统应该如何设计呢?

 

public class JettaCar {
	public void run() {
		System.out.println("JettaCar run");
	}
}
public class Person {
	private JettaCar jettaCar;

	public Person(JettaCar jettaCar) {
		super();
		this.jettaCar = jettaCar;
	}

	public void drive() {
		jettaCar.run();
	}

	public static void main(String[] args) {
		Person p = new Person(new JettaCar());
		p.drive();
	}

  

看起来代码功能好像实现了? 那如果后来他买了宝马车,那又该在怎么做呢?

很简单嘛  在新建一个宝马类,在person中传入即可,

但是我们的核心代码也要修改,能不能不修改person类呢?  --当然可以,抽象出汽车接口

 

 

定义一个汽车Car接口,定义run方法

 

person 中 我们使用该接口 

 

public interface Car {
void run();
}

public class BmwCar implements Car {

	@Override
	public void run() {
	System.out.println("BmwCar run");
		
	}

}
Person 里面是一个接口
public class Person {
	//private JettaCar jettaCar;
	private Car car;
	public Person(Car car) {
		super();
		this.car = car;
	}

	public void drive() {
		car.run();
	}

	public static void main(String[] args) {
		//这里我们传入什么汽车对象 就调用什么对象的run方法,拓展性增强
     Person p = new Person(new JettaCar());
		p.drive();
	}
}

 

  

 

 

总结:系统未来可能需要拓展时,记得定义接口。以增强拓展性。

posted on 2017-04-11 17:05  一只小蜗牛12138  阅读(132)  评论(0编辑  收藏  举报

导航