Animal接口 分数 20 作者 sy 单位 西南石油大学 已知有如下Animal抽象类和IAbility接口,请编写Animal子类Dog类与Cat类,并分别实现IAbility接口,另外再编写一个模拟器类Simulator调用IAbility接口方法,具体要求如下。 已有的Animal抽象类定义: abstract class Animal{ private String name; //名字 private int age; //年龄 public Animal(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age
时间: 2023-06-17 12:05:46 浏览: 417
) { this.age = age; } public abstract void play(); //抽象方法,动物都会玩 } 已有的IAbility接口定义: interface IAbility{ void run(); //动物都会跑 void eat(); //动物都会吃 } 要求: 1. 编写Dog类和Cat类,分别继承Animal类,并实现IAbility接口。 2. 在Dog类和Cat类中,实现IAbility接口中的方法run()和eat(),其中run()方法输出“狗在奔跑”,eat()方法输出“狗在啃骨头”(Dog类中),或“猫在吃鱼”(Cat类中)。 3. 在Animal类中,声明一个抽象方法play(),表示动物都会玩。 4. 在Dog类和Cat类中,重写抽象方法play(),其中play()方法输出“狗在玩球”(Dog类中),或“猫在玩线团”(Cat类中)。 5. 编写Simulator类,调用IAbility接口中的方法run()和eat(),并调用Animal类中的方法play()。其中,Simulator类中定义了一个方法show,接收一个Animal类型的参数,调用该参数的run()、eat()和play()方法。 6. 在main方法中,创建Dog类对象和Cat类对象各一个,然后调用Simulator类中的show方法,分别传入这两个对象,观察输出结果。
以下是代码实现:
```java
abstract class Animal{
private String name; //名字
private int age; //年龄
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void play(); //抽象方法,动物都会玩
}
interface IAbility{
void run(); //动物都会跑
void eat(); //动物都会吃
}
class Dog extends Animal implements IAbility{
public Dog(String name, int age){
super(name, age);
}
@Override
public void run() {
System.out.println("狗在奔跑");
}
@Override
public void eat() {
System.out.println("狗在啃骨头");
}
@Override
public void play() {
System.out.println("狗在玩球");
}
}
class Cat extends Animal implements IAbility{
public Cat(String name, int age){
super(name, age);
}
@Override
public void run() {
System.out.println("猫在奔跑");
}
@Override
public void eat() {
System.out.println("猫在吃鱼");
}
@Override
public void play() {
System.out.println("猫在玩线团");
}
}
class Simulator{
public void show(Animal animal){
animal.run();
animal.eat();
animal.play();
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("旺财", 3);
Cat cat = new Cat("咪咪", 2);
Simulator simulator = new Simulator();
simulator.show(dog);
simulator.show(cat);
}
}
```
输出结果为:
```
狗在奔跑
狗在啃骨头
狗在玩球
猫在奔跑
猫在吃鱼
猫在玩线团
```
阅读全文