Java 多态性示例:动物、猫和狗

本文通过定义动物、猫和狗类,并使用多态性调用'吃饭'和'捉老鼠'方法,展示了多态性的特点。

动物类的定义:

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("Animal is eating.");
    }
}

猫类的定义:

public class Cat extends Animal {
    public Cat(String name, int age, String gender) {
        super(name, age, gender);
    }

    @Override
    public void eat() {
        System.out.println("Cat is eating fish.");
    }

    public void catchMouse() {
        System.out.println("Cat is catching mouse.");
    }
}

狗类的定义:

public class Dog extends Animal {
    public Dog(String name, int age, String gender) {
        super(name, age, gender);
    }

    @Override
    public void eat() {
        System.out.println("Dog is eating meat.");
    }

    public void watchHouse() {
        System.out.println("Dog is watching house.");
    }
}

测试多态调用:

public class Test {
    public static void main(String[] args) {
        Animal animal1 = new Animal("Animal1", 2, "male");
        Animal animal2 = new Cat("Cat1", 3, "female");
        Animal animal3 = new Dog("Dog1", 4, "male");

        animal1.eat();  // 输出:Animal is eating.
        animal2.eat();  // 输出:Cat is eating fish.
        animal3.eat();  // 输出:Dog is eating meat.

        ((Cat) animal2).catchMouse();  // 输出:Cat is catching mouse.
        ((Dog) animal3).watchHouse();  // 输出:Dog is watching house.
    }
}

特点:

  1. 多态调用了同一个方法,但是由于子类对该方法进行了重写,因此输出的内容不同。
  2. 只有猫和狗才能捉老鼠和看家,因此需要将动物对象强制转换为对应的子类才能调用这些方法。如果将动物对象直接声明为猫或狗,则可以直接调用这些方法。
Java 多态性示例:动物、猫和狗

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

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