定义一个动物类Animal,有成员方法void voice(),再定义两个子类:狗类Dog和猫类在于类中自行重写成员方法voice()实现其功能。当调用格式如下时,分别实现其输出
时间: 2024-09-30 22:06:13 浏览: 147
当你定义了一个名为`Animal`的抽象基类,并在这个基类中声明了一个虚方法`void voice()`,你可以创建两个派生类`Dog`和`Cat`,它们各自覆盖`voice()`方法来体现各自的特性。例如:
```java
// 基类 Animal
abstract class Animal {
public abstract void voice();
}
// 狗类 Dog,重写 voice() 方法
class Dog extends Animal {
@Override
public void voice() {
System.out.println("汪汪汪,我是小狗!");
}
}
// 猫类 Cat,也重写 voice() 方法
class Cat extends Animal {
@Override
public void voice() {
System.out.println("喵喵喵,我是小猫!");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog(); // 创建一个 Dog 对象作为 Animal 的实例
Animal animal2 = new Cat(); // 创建一个 Cat 对象同样作为 Animal 的实例
animal1.voice(); // 输出: 汪汪汪,我是小狗!
animal2.voice(); // 输出: 喵喵喵,我是小猫!
}
}
```
在这个例子中,当你通过`Animal`类型的引用调用`voice()`方法时,实际运行的是对应子类(`Dog`或`Cat`)中的方法,这就是多态的应用。
阅读全文