通过一个例子来看:
主人喂养宠物
public class Master{
public void feed(Cat cat){
cat.eat();
}
}
class Cat{
public void eat{
System.out.println("小猫在吃鱼。。。");
}
}
在上述的例子中,主人养了一只猫并喂养它,但是后来主人又想养一只狗了。
于是,我们需要在主人类中新添加一个feed(Dog dog),如果主人的需求越来越多(客户的需求增加了),我们就需要不断的修改主人类,这是不合适的。
软件开发原则ocp(开闭原则:对扩展开放,对修改关闭。
修改越少越好。
于是我们可以在主人类中这样写代码
public class Master{
public void feed(Pet p){
p.eat();
}
}
class Pet{
public void eat{};
}
class Cat extends Pet{
public void eat{
System.out.println("小猫在吃鱼。。。");
}
}
在主人类中使用一个宠物类,以后再养狗就可以继承这个宠物类,然后重写Pet类的eat()方法,主人就可以喂养狗了,不需要修改Master类了。
在上面的例子中,我们通过Pet类来使程序的扩展性更强,这就是面向抽象编程,面向一个抽象的宠物类,而不是一个个具体的Dog,Cat等。这其中运用了多态来实现,多态是面对抽象的终于实现途径。
多态可以降低程序的耦合度,提高程序的扩展力。