publicclassMyTest3{publicstaticvoidmain(String[] args){
Person person =newPerson();
Dog dog =newDog();
person.feed(dog);}}classPerson{publicvoidfeed(Dog dog){
System.out.println("开始喂养");
dog.eat();}}classDog{publicvoideat(){
System.out.println("吃骨头");}}//现在需求增加了还需要喂养小猫//这时就需要在Person中提供一个重载方法
publicclassMyTest3{publicstaticvoidmain(String[] args){
Person person =newPerson();
Dog dog =newDog();
Cat cat =newCat();
person.feed(dog);
person.feed(cat);}}classPerson{publicvoidfeed(Dog dog){
System.out.println("开始喂养");
dog.eat();}publicvoidfeed(Cat cat){
System.out.println("开始喂养");
cat.eat();}}classDog{publicvoideat(){
System.out.println("吃骨头");}}classCat{publicvoideat(){
System.out.println("吃小鱼干");}}//也就是说,我们每增加一个动物,都需要在Person类中提供一个重载方法//那现在就是 上层依赖于下层 也就是Person类依赖于Dog类、Cat类//那么下层每增加一个类,就得去修改上层,违反了依赖倒置,也就是下层一变化,上层也跟着变//我们希望的是,当下层增加一个类时,上层应该不知道,也就是上层不应该发生变动。
publicclassMyTest3{publicstaticvoidmain(String[] args){
Person person =newPerson();
Dog dog =newDog();
Cat cat =newCat();
person.feed(dog);
person.feed(cat);}}classPerson{publicvoidfeed(Animal animal){
System.out.println("开始喂养");
animal.eat();}}//定义一个抽象动物父类,让它们都去继承这个父类,去重写eat()方法,这样每增加一个类,//Person类就不需要再提供一个重载方法了,符合依赖倒置原则abstractclassAnimal{publicabstractvoideat();}classDogextendsAnimal{publicvoideat(){
System.out.println("吃骨头");}}classCatextendsAnimal{publicvoideat(){
System.out.println("吃小鱼干");}}