基础:多态的理解
2019-04-17 本文已影响0人
Bitson
猫和狗两个类
class Cat {
}
class Dog {
}
假如主人要喂的话,在没有多态的情况下,主人要实现两个方法,分别针对猫和狗来喂
class Master {
void feed(Dog dog) {}
void feed(Cat cat) {}
}
这样的话,有多少类动物就需要写多少个喂的方法
有多态的话,Master可以这样实现
让猫和狗都继承一个Animal的父类
class Animal {
void eat() {}
}
class Dog extends Animal {
void eat() {}
}
class Cat extends Animal {
void eat() {}
}
class Master {
// 这里只需要实现一个参数为Animal的喂方法,只要传入的参数都遵循Animal的规则(必须实现那些方法)。就可以在不知道具体实现类(Dog或Cat)的情况下进行操作(feed)。那就可以只针对父类(或者接口)进行编程,针对父类(或接口)来编程的话,就算来更多不同类型的动物,代码都可以不用变化,只需要继承Animal类,并实现具体的子类就可以了。
void feed(Animal animal) {
animal.eat();
}
}
public class Test {
public static void main() {
Master master = new Master();
master.feed(new Dog());
master.feed(new Cat());
}
}