多态的应用
- 以前对多态的概念总是感觉很晦涩,以及不太明白应用场景
非多态实现 人工喂养动物功能
public class Master {
public static void main(String[] args) {
Master master = new Master();
master.feed(new Dog());
master.feed(new Cat());
}
public void feed(Dog dog) {
dog.eat();
}
public void feed(Cat cat) {
cat.eat();
}
}
class Dog {
public void eat() {
System.out.println("狗在吃");
}
}
class Cat {
public void eat() {
System.out.println("猫在吃");
}
}
总结
由于master 直接维护各个动物,所有每次新增一种动物,就得新增一个对应动物的 feed(),代码为了满足业务,总需要在主类中修改.一旦业务复杂,就可能影响稳定性
多态实现 人工喂养动物功能
public class Master2 {
public static void main(String[] args) {
Master2 master2 = new Master2();
master2.feed(new Dog1());
master2.feed(new Cat1());
}
public void feed(Animal animal) {
animal.eat();
}
}
class Animal {
public void eat() {
System.out.println("动物在吃");
}
}
class Dog1 extends Animal {
@Override
public void eat() {
System.out.println("狗在吃");
}
}
class Cat1 extends Animal {
@Override
public void eat() {
System.out.println("猫在吃");
}
}
总结
由于master2 直接维护了 Animal,每次新增一种动物,只要动物继承了Animal,且重载了eat()方法,即可
多态的本质是 继承 + 子父类方法的重写,业务扩展时,影响最小,主类,父类都不用调整
多态在编程中的应用实例
文章通过对比非多态和多态实现的喂养动物功能,展示了多态的优势。在非多态实现中,每次添加新动物类型都需要修改主类;而在多态实现中,通过动物类的继承和方法重写,只需保证新动物类继承自Animal并覆写eat()方法,就能实现业务扩展,降低了代码维护的复杂性。
373

被折叠的 条评论
为什么被折叠?



