MST

星途 面试题库

面试题:Java类设计中的继承与多态应用

假设有一个基础类Animal,有属性name和方法eat()。现在要设计两个子类Dog和Cat,Dog类有额外的方法bark(),Cat类有额外的方法catchMouse()。请用Java代码实现这个类的继承体系,并在测试类中展示多态的应用。
30.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
class Animal {
    protected String name;

    public Animal(String name) {
        this.name = name;
    }

    public void eat() {
        System.out.println(name + "正在吃东西。");
    }
}

class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    public void bark() {
        System.out.println(name + "正在汪汪叫。");
    }
}

class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    public void catchMouse() {
        System.out.println(name + "正在抓老鼠。");
    }
}

public class Test {
    public static void main(String[] args) {
        Animal animal1 = new Dog("小狗");
        Animal animal2 = new Cat("小猫");

        animal1.eat();
        if (animal1 instanceof Dog) {
            ((Dog) animal1).bark();
        }

        animal2.eat();
        if (animal2 instanceof Cat) {
            ((Cat) animal2).catchMouse();
        }
    }
}

上述代码中:

  1. 首先定义了Animal类,它有name属性和eat方法。
  2. Dog类继承自Animal类,并且增加了bark方法。
  3. Cat类继承自Animal类,并且增加了catchMouse方法。
  4. Test类的main方法中,使用Animal类型的变量分别指向DogCat的实例,展示了多态的应用。通过instanceof关键字判断对象实际类型,进而调用子类特有的方法。