创建一个动物父类和狗,猫子类,当这些子类中有共同方法只是实现不同时,我们可以利用多态的扩展性
class Animal{public void eat(){System.out.println("吃饭");}public void sheep(){System.out.println("睡觉");}
}class Dog extends Animal{public void eat(){System.out.println("狗吃肉");}public void sheep(){System.out.println("狗侧着睡觉");}
}class Cat extends Animal{public void eat(){System.out.println("猫吃鱼");}public void sheep(){System.out.println("猫躺着睡");}
}
如上狗类和猫类都有相同的方法,只是实现不同,此时我们可以编写一个工具类,并在工具类中编写一个成员方法,以Animal为参数,调用其共同的方法
//可以将不同类的共同方法存放在一个单独的类方法中,这样后续创建新类时想要调用该新类方法时,不需要再去添加该类的方法
class AnimalTool{public static void Fun(Animal animal){ //以类名作为参数类型,后面传的值就相当于为:Animal animal =new Dog(多态)animal.eat(); //用对象名去调用方法时满足编译看左,运行看右,所以会去Dog类里面去找该方法并运行animal.sheep();}
}
测试类
public class DuoTaiDemo1 {public static void main(String[] args) {//父类的引用指向子类对象Animal a1=new Dog();AnimalTool.Fun(a1); //AnimalTool会调用自己的静态方法Fun,然后我们将a1(Dog对象)作为参数传入给Fun方法//父类的引用指向子类对象Animal c1=new Cat();AnimalTool.Fun(c1);}}