publicclassMaster{publicvoidfeed( Cat cat){
cat.eat();}publicvoidfeed(Dog dog){
dog.eat();}//这里的两个feed方法构成重载//往后主人想要喂养新的宠物都要在这里添加新的feed(实例)方法//主人与具体的宠物一一关联,耦合度高,拓展性差}publicclassCat{publicvoideat(){
System.out.println("cat is eating a fish");}}publicclassDog{publicvoideat(){
System.out.println("dog is eating a bone");}}publicclassTest{publicstaticvoidmain(String[] args){
Master m=newmaster();
Cat cat=newcat();
Dog dog=newDog();
m.feed(cat);
m.feed(dog);}}
2.多态实例代码
publicclassMaster{publicvoidfeed( Pet pet){
pet.eat();}//往后主人想要喂养新的宠物无需在这里添加新的feed(实例)方法//主人与具体的宠物不再关联,面向的是抽象的Pet,耦合度低,拓展性高//降低了程序耦合度【解耦合】,提高了程序的拓展力}publicclassPet{//将多个宠物实例对象抽象为宠物类publicvoideat(){}}publicclassCatextendsPet{publicvoideat(){
System.out.println("cat is eating a fish");}//继承宠物类,eat()方法构成方法的覆盖(重写)}publicclassDogextendsPet{publicvoideat(){
System.out.println("dog is eating a bone");}}publicclassTest{publicstaticvoidmain(String[] args){
Master m=newMaster();
Cat cat=newCat();
Dog dog=newDog();
m.feed(cat);//m.feed(new cat());
m.feed(dog);//这里用到了多态,子类Dog/Cat-->父类Pet转换}}