java中多态的扩展性

创建一个动物父类和狗,猫子类,当这些子类中有共同方法只是实现不同时,我们可以利用多态的扩展性

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);
    }

}
posted @ 2024-09-25 14:32  你的镁偷走了我的锌  阅读(17)  评论(0)    收藏  举报