面试题答案
一键面试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();
}
}
}
上述代码中:
- 首先定义了
Animal
类,它有name
属性和eat
方法。 Dog
类继承自Animal
类,并且增加了bark
方法。Cat
类继承自Animal
类,并且增加了catchMouse
方法。- 在
Test
类的main
方法中,使用Animal
类型的变量分别指向Dog
和Cat
的实例,展示了多态的应用。通过instanceof
关键字判断对象实际类型,进而调用子类特有的方法。