声明一个抽象类Animal,具有吃eat和说speak两种抽象行为,具体类狗Dog和猫Cat都继承了Animal类,请编写程序声明这三个类和测试类,要求测试类中使用上转型对象来访问Dog和Cat的方法。
时间: 2024-03-06 11:48:43 浏览: 58
可以使用以下代码来声明Animal、Dog、Cat和测试类:
```java
// Animal抽象类
abstract class Animal {
// 抽象方法,表示吃的行为
public abstract void eat();
// 抽象方法,表示说的行为
public abstract void speak();
}
// Dog类,继承自Animal抽象类
class Dog extends Animal {
// 实现eat方法
public void eat() {
System.out.println("狗吃骨头。");
}
// 实现speak方法
public void speak() {
System.out.println("汪汪汪。");
}
}
// Cat类,继承自Animal抽象类
class Cat extends Animal {
// 实现eat方法
public void eat() {
System.out.println("猫吃鱼。");
}
// 实现speak方法
public void speak() {
System.out.println("喵喵喵。");
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Animal animal1 = new Dog(); // 上转型对象访问Dog的方法
Animal animal2 = new Cat(); // 上转型对象访问Cat的方法
animal1.eat(); // 调用Dog的eat方法
animal1.speak(); // 调用Dog的speak方法
animal2.eat(); // 调用Cat的eat方法
animal2.speak(); // 调用Cat的speak方法
}
}
```
在测试类中,分别使用了上转型对象animal1和animal2来访问Dog和Cat的方法。这样做的好处是,可以使程序更加灵活,可以在运行时动态地确定具体的子类类型。
阅读全文