1、开发出一个Animal类(动物)要求如下: a) 该类为抽象类 b) 定义一个私有的(private)、字符串类型的、实例属性name,表示动物的名称。 c) 该类仅有一个公有的(public)构造方法,该构造方法有一个参数,参数为字符串类型该参数表示动物的名称,该构造方法的功能为将参数值赋值于属性name。 d) 该类包含两个互为重载的方法: i. public String getName(){//...} 功能为获得动物的名称; ii. public String getName(String prefix){ } 功能为获得前面加上前缀的(hello参数值)的动物名称。 e) 定义一个公有的抽象方法,其功能为吃东西:public abstract void eat(); 2、开发一个Flyer接口(飞行者),要求如下: f) 定义一个飞行方法:void fly(); 3、开发一个FlyFish类(飞鱼)要求如下: g) 该类为非抽象类; h) 继承Animal类;重写父类方法 eat方法输出 很能吃的鱼 i) 实现Flyer接口 重写接口中的方法 方法输出 会飞的鱼 j) 定义一个公有的(public)无参构造方法,该构造方法通过调用父类的构造方法为父类属性name赋值“飞鱼”。 k) 定义一个公有的实例方法,其功能为玩游戏:public void game(){} 方法输出 玩游戏 1. 开发一个测试类如下,进行测试。输出以下结果 很能吃的鱼 会飞的鱼 玩游戏 飞鱼 hello飞鱼
时间: 2024-03-20 18:42:44 浏览: 120
day08_继承、抽象类、包.pdf
以下是Animal类的实现:
```java
public abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getName(String prefix) {
return prefix + name;
}
public abstract void eat();
}
```
以下是Flyer接口的实现:
```java
public interface Flyer {
void fly();
}
```
以下是FlyFish类的实现:
```java
public class FlyFish extends Animal implements Flyer {
public FlyFish() {
super("飞鱼");
}
@Override
public void eat() {
System.out.println("很能吃的鱼");
}
@Override
public void fly() {
System.out.println("会飞的鱼");
}
public void game() {
System.out.println("玩游戏");
}
}
```
以下是测试类的实现:
```java
public class Test {
public static void main(String[] args) {
FlyFish flyFish = new FlyFish();
flyFish.eat();
flyFish.fly();
flyFish.game();
System.out.println(flyFish.getName());
System.out.println(flyFish.getName("hello"));
}
}
```
输出结果如下:
```
很能吃的鱼
会飞的鱼
玩游戏
飞鱼
hello飞鱼
```
阅读全文