// 动物类
public class Animal {
    private String name;
    private int age;
    private String gender;
    
    public Animal(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    
    public void eat() {
        System.out.println(name + '正在吃饭');
    }
    
    public String getName() {
        return name;
    }
}

// 猫类
public class Cat extends Animal {
    public Cat(String name, int age, String gender) {
        super(name, age, gender);
    }
    
    @Override
    public void eat() {
        System.out.println(getName() + '正在吃鱼');
    }
    
    public void catchMouse() {
        System.out.println(getName() + '正在捉老鼠');
    }
}

// 狗类
public class Dog extends Animal {
    public Dog(String name, int age, String gender) {
        super(name, age, gender);
    }
    
    @Override
    public void eat() {
        System.out.println(getName() + '正在吃肉');
    }
    
    public void watchHouse() {
        System.out.println(getName() + '正在看家');
    }
}

// 测试类
public class Test {
    public static void main(String[] args) {
        Animal animal1 = new Cat('小花', 2, '母');
        Animal animal2 = new Dog('小黑', 3, '公');
        
        animal1.eat();
        ((Cat) animal1).catchMouse();
        
        animal2.eat();
        ((Dog) animal2).watchHouse();
    }
}

输出结果:

小花正在吃鱼
小花正在捉老鼠
小黑正在吃肉
小黑正在看家

特点:多态使得我们可以用父类类型的引用变量来引用子类类型的对象,从而实现了不同的对象调用相同的方法产生不同的结果。在上述代码中,动物类的eat方法被子类重写了,调用时会根据实际创建的对象类型来执行相应的方法。同时,由于猫类和狗类都继承自动物类,它们都具有eat方法,但它们的实现不同,多态性使得我们可以通过父类类型的引用变量调用子类类型的不同实现。

Java 多态示例:动物、猫和狗的继承与方法重写

原文地址: https://www.cveoy.top/t/topic/okw9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录