某国家队有队员(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 10:41:27 浏览: 130
IPD产品开发流程角色和职责说明
5星 · 资源好评率100%
下面是用 Java 实现的示例代码:
```
// 队员类,作为抽象父类
abstract class Member {
// 姓名、年龄、身高、体重属性
private String name;
private int age;
private double height;
private double weight;
// 构造方法
public Member(String name, int age, double height, double weight) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}
// 抽象方法,具体实现由子类完成
public abstract void competition();
}
// 运动员类,继承自 Member
class Player extends Member {
// 构造方法
public Player(String name, int age, double height, double weight) {
super(name, age, height, weight);
}
// 重写父类的抽象方法
@Override
public void competition() {
// PK 其他选手
}
}
// 教练类,继承自 Member,实现 learnEnglish 接口
class Coach extends Member implements learnEnglish {
// 构造方法
public Coach(String name, int age, double height, double weight) {
super(name, age, height, weight);
}
// 重写父类的抽象方法
@Override
public void competition() {
// 指导运动员
}
// 实现 learnEnglish 接口的方法
@Override
public void learnEnglish() {
// 学习英语
}
}
// learnEnglish 接口
interface learnEnglish {
// 学习英语的抽象方法
void learnEnglish();
}
// 测试类
class Test {
public static void main(String[] args) {
// 创建运动员对象
Player p = new Player("张三", 22, 1.80, 75.0);
// 调用运动员的 competition 方法
p.competition();
// 创建教练对象
Coach c = new Coach("李四", 45, 1.75, 80.0);
// 调用教练的 competition 方法
c.competition();
//
阅读全文