声明一个抽象Animal类,此类中定义抽象方法shout(); 声明Dog类、Cat类,均继承自Animal类,并重写了shout()方法; 运用多态方式实例化子类对象并调用shout()方法打印输出信息; 具体输出要求请看测试说明。
时间: 2024-09-13 19:18:04 浏览: 60
关于抽象类的java实验 Animal
首先,我们创建一个名为`Animal`的抽象类,它有一个抽象方法`shout()`,表示所有动物都会发出声音的基本行为:
```java
public abstract class Animal {
public abstract void shout();
}
```
然后,我们分别声明`Dog`和`Cat`两个子类,它们都继承了`Animal`类,并实现了`shout()`方法,以体现各自特有的叫声:
```java
public class Dog extends Animal {
@Override
public void shout() {
System.out.println("汪汪");
}
}
public class Cat extends Animal {
@Override
public void shout() {
System.out.println("喵喵");
}
}
```
现在我们可以运用多态性来创建`Animal`类型的对象,但实际上存储的是`Dog`或`Cat`类型的实例,并调用它们各自的`shout()`方法:
```java
public static void main(String[] args) {
Animal animal1 = new Dog(); // 创建一个Dog对象
Animal animal2 = new Cat(); // 创建一个Cat对象
animal1.shout(); // 输出 "汪汪"
animal2.shout(); // 输出 "喵喵"
// 使用父类引用指向子类对象
Animal dogOrCat = new Dog(); // 或者 new Cat();
dogOrCat.shout(); // 仍会输出对应子类的叫声
}
```
在这个例子中,尽管我们使用的是`Animal`类型的引用,但是根据实际创建的对象,`shout()`方法会动态地表现出`Dog`的“汪汪”声或`Cat`的“喵喵”声,这就是多态的具体应用。
阅读全文