某国家队有队员(member)数名,包括运动员(player)和教练(coach),其中运动员和教练都有自己的姓名(name)、年龄(age)、身高(height)、体重(weight)属性,都要去参加比赛(competition),但二者不同的是,教练参加比赛是为了指导运动员,而运动员参加比赛是与其他选手PK。且为了出国交流,教练需要学习英语(learnEnglish)。要求利用抽象类、多态和接口实现,并在测试类(Test)中进行测试。 提示: ① 队员(member)是抽象父类,包含姓名(name)、年龄(age)、身高(height)、体重(weight)属性,包含抽象方法(competition),具体实现由子类完成。 ② 学习英语(learnEnglish)是接口,包含一个抽象方法。 ③ 运动员(player)和教练(coach)是队员(member)的子类,同时教练(coach)需要实现英语(learnEnglish)。
时间: 2023-02-06 18:41:27 浏览: 106
你可以这样实现这个问题:
1. 定义一个抽象类 `Member`,包含姓名、年龄、身高、体重属性和一个抽象方法 `competition()`。
2. 定义一个接口 `LearnEnglish`,包含一个抽象方法 `learn()`。
3. 定义一个类 `Player`,继承自 `Member` 类,并实现 `competition()` 方法。
4. 定义一个类 `Coach`,继承自 `Member` 类,并实现 `competition()` 方法和 `LearnEnglish` 接口的 `learn()` 方法。
5. 在测试类 `Test` 中,创建 `Player` 和 `Coach` 的实例,调用它们的 `competition()` 方法和 `learn()` 方法。
以下是用 Java 代码实现的示例:
```
// 抽象类 Member
abstract class Member {
String name;
int age;
double height;
double weight;
abstract void competition();
}
// 接口 LearnEnglish
interface LearnEnglish {
void learn();
}
// 类 Player,继承自 Member 类
class Player extends Member {
@Override
void competition() {
System.out.println("Player is participating in the competition.");
}
}
// 类 Coach,继承自 Member 类,实现 LearnEnglish 接口
class Coach extends Member implements LearnEnglish {
@Override
void competition() {
System.out.println("Coach is participating in the competition to guide the players.");
}
@Override
public void learn() {
System.out.println("Coach is learning English.");
}
}
// 测试类 Test
public class Test {
public static void main(String[] args) {
Player player = new Player();
player.competition(); // 输出 "Player is participating in the competition."
Coach coach = new Coach();
coach.competition(); // 输出 "Coach is participating in the competition to guide the players."
coached.learn(); // 输出 "Coach is learning English."
}
}
```