某国家队有队员(member)数名,包括运动员(player)和教练(coach),其中运动员和教练都有自己的姓名(name)、年龄(age)、身高(height)、体重(weight)属性,都要去参加比赛(competition),但二者不同的是,教练参加比赛是为了指导运动员,而运动员参加比赛是与其他选手PK。且为了出国交流,教练需要学习英语(learnEnglish)。要求利用抽象类、多态和接口实现,并在测试类(Test)中进行测试。
abstract class Member {
private String name;
private int age;
private int height;
private int weight;
public Member(String name, int age, int height, int weight) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}
public abstract void competition();
}
interface LearnEnglish {
void learnEnglish();
}
class Player extends Member {
public Player(String name, int age, int height, int weight) {
super(name, age, height, weight);
}
@Override
public void competition() {
System.out.println("Player is competing with other players.");
}
}
class Coach extends Member implements LearnEnglish {
public Coach(String name, int age, int height, int weight) {
super(name, age, height, weight);
}
@Override
public void competition() {
System.out.println("Coach is coaching the players in the competition.");
}
@Override
public void learnEnglish() {
System.out.println("Coach is learning English.");
}
}
class Test {
public static void main(String[] args) {
Member player = new Player("Tom", 20, 180, 75);
Member coach = new Coach("Jerry", 35, 170, 65);
player.competition();
coached.competition();
((Coach) coached).learnEnglish();
}
}
详细代码如下
// 定义 Member 类
public 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(); // 参加比赛
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 double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
public class Coach extends Member implements LearnEnglish {
private int level; // 教练英语水平,1~5 级
private String certificate; // 英语教师证书
public Coach(String name, int age, double height, double weight, int level, String certificate) {
super(name, age, height, weight);
this.level = level;
this.certificate = certificate;
}
@Override
public void competition() {
System.out.println("Coach " + getName() + " is coaching players in the competition.");
}
@Override
public void learnEnglish() {
System.out.println("Coach " + getName() + " is learning English.");
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getCertificate() {
return certificate;
}
public void setCertificate(String certificate) {
this.certificate = certificate;
}
}
public class Test {
public static void main(String[] args) {
// 创建 Coach 和 Player 对象
Coach coach = new Coach("李四", 38, 176, 80, "足球");
Player player = new Player("张三", 22, 180, 75, "足球");
// Coach 和 Player 参加比赛
coached.competition();
player.competition();
// Coach 学习英语
coached.learnEnglish();
}
}
先看下效果图:
/**
* @author huazie
* @version 2.0.0
* @since 2.0.0
*/
public interface ICompetition {
/**
* 比赛
*/
void competition();
}
public abstract class Member implements ICompetition{
protected String name;
protected Integer age;
protected Integer height;
protected Integer weight;
public Member() {
}
public Member(String name, Integer age, Integer height, Integer weight) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}
}
public class Coach extends Member {
public Coach() {
}
public Coach(String name, Integer age, Integer height, Integer weight) {
super(name, age, height, weight);
}
@Override
public void competition() {
System.out.println("教练【" + name + "】参加比赛是指导运动员");
}
public void learnEnglish() {
System.out.println("教练【" + name + "】学习英文");
}
}
public class Player extends Member {
public Player() {
super();
}
public Player(String name, Integer age, Integer height, Integer weight) {
super(name, age, height, weight);
}
@Override
public void competition() {
System.out.println("运动员【" + name + "】参加比赛与别人PK");
}
}
public class Main {
public static void main(String[] args) {
ICompetition member1 = new Coach("Hello", 30, 180, 80);
ICompetition member2 = new Player("Huazie", 20, 185, 70);
member1.competition();
member2.competition();
((Coach) member1).learnEnglish();
}
}