编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。

简介: 编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。

需求说明:


模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。具体分析如下:


(1)共同的属性:姓名、年龄。


(2)共同的方法:吃饭。其中吃饭的内容两者不同,所以采用抽象的方法。


(3)不同的方法:队员练习,教练教导,分别写入队员类和教练类。


(4)接口:学习英语。


(5)抽象类:人类、运动员类、教练类、后两者继承自人类。


(6)具体类:乒乓球队员类、教练类和篮球队员类、教练类;分别继承远动员或教练类,其中乒乓球有关的扩展学习英语接口


72.png


程序运行结果:

image.png


实现思路:


(1)定义英语接口English,该接口中定义抽象方法speak(),返回值类型是void。


(2)定义抽象类Person,包括两个成员变量,分别是name 和 age。name是String 类型,age是int类型。定义两个构造方法,一个有参,一个无参。再定义一个抽象方法,eat(),返回值类型是void。最后定义一个show()方法,返回值是void。该方法中显示名称和年龄。


(3)定义抽象远动员类Player,它继承了Person抽象类。定义两个构造方法一个有参,一个无参注意应用super。再定义一个抽象方法student()。返回值是void。这是运动员类特有的方法。


(4)定义抽象教练类Coach,它继承了Person抽象类。定义两个构造方法一个有参,一个无参注意应用super。再定义一个抽象方法teacher()。返回值是void。这是运动员类特有的方法。


(5)定义乒乓球运动员类PingpangPlayer。它继承Player,同时实现English接口。


(6)定义乒乓球教练类PingpangCoach。它继承Coach,同时实现English接口。


(7)定义篮球运动员类BasketballPlayer。它继承Player。


(8)定义篮球教练类BasketballCoach。它继承Coach。


(9)定义测试类Test,在主方法中,分别实例化不同运动员和教练员并调用各自的方法。


实现代码:


English 接口:

//定义一个说英语的接口
public interface English {
  //说英语
  void speak();
}


Person 抽象类:


public abstract class Persion {
  private String name;//姓名
  private int age;//年龄
  //无参构造
  public Persion() {
  }
  //有参构造
  public Persion(String name, int age) {
    this.name = name;
    this.age = age;
  }
  //吃饭的抽象方法
  public abstract void eat();
  //睡觉
  public void sleep() {
    System.out.println("人的要睡觉的");
  }
  //展示姓名和年龄
  public void show() {
    System.out.printf("姓名:%s\t年龄:%d",name,age);
    System.out.println();
  }
  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;
  }
}


Player 运动员类:


public abstract class Player extends Persion{
  //无参构造
  public Player() {
    super();
  }
  //有参构造方法
  public Player(String name,int age) {
    super();
  }
  //运动员学习的抽象类
  public abstract void student();
}


Coach 教练类:


public abstract class Coach extends Persion {
  //无参构造
  public Coach() {
    super();
  }
  //有参构造方法
  public Coach(String name,int age) {
    super();
  }
  //教练教授的学习方法
  public abstract void teacher();
}


PingpangPlayer 乒乓球运动员类:


public class PingpangPlayar extends Player implements English {
  @Override
  public void student() {
    System.out.println("乒乓球运动员要练习发球和接球技巧");
  }
  @Override
  public void eat() {
    System.out.println("乒乓运动员吃清淡的饭菜");
  }
  @Override
  public void speak() {
    System.out.println("乒乓球运动员要学习英语");
  }
}


PingpangCoach 乒乓球教练类:


public class PingpangCoach extends Coach implements English {
  @Override
  public void teacher() {
    System.out.println("乒乓球教练要教导队员发球和接球技巧");
  }
  @Override
  public void eat() {
    System.out.println("乒乓球教练跟着队员吃清淡的饭菜");
  }
  @Override
  public void speak() {
    System.out.println("乒乓球教练要学习英语");
  }
}


BasketballPlayer 篮球运动员类:


public class BasketballPlayer extends Player {
  @Override
  public void student() {
    System.out.println("篮球运动员要练习运球和投篮技巧");
  }
  @Override
  public void eat() {
    System.out.println("篮球运动员要吃高蛋白的饭菜,保持健壮的身体");
  }
}


BasketballCoach 篮球教练类:


public class BasketballCoach extends Coach {
  @Override
  public void teacher() {
    System.out.println("篮球教练要跟着队员,要吃高蛋白的饭菜");
  }
  @Override
  public void eat() {
    System.out.println("篮球教练要教导队员运球和投篮技巧");
  }
}


Test 测试类:


public class Test {
  public static void main(String[] args) {
    //实例化乒乓球运动员
    PingpangPlayar pp = new PingpangPlayar();
    pp.setName("马明");
    pp.setAge(26);
    pp.show();
    pp.eat();
    pp.student();
    pp.speak();
    System.out.println("----------------------");
    //实例化乒乓球教练
    PingpangCoach pc = new PingpangCoach();
    pc.setName("姚梁");
    pc.setAge(38);
    pc.show();
    pc.eat();
    pc.teacher();
    pc.speak();
    System.out.println("----------------------");
    //实例化篮球运动员
    BasketballPlayer bp = new BasketballPlayer();
    bp.setName("刘国");
    bp.setAge(41);
    bp.show();
    bp.eat();
    bp.student();
    System.out.println("----------------------");
    //实例化篮球教练
    BasketballCoach bc = new BasketballCoach();
    bc.setName("杰克");
    bc.setAge(42);
    bc.show();
    bc.eat();
    bc.teacher();
  }
}
相关文章
|
2天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
18 2
|
2月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
99 43
Java学习十六—掌握注解:让编程更简单
|
1月前
|
安全 Java 数据安全/隐私保护
有哪些场景不适合使用Java反射机制
Java反射机制虽强大,但并非万能。在性能要求极高、安全性严格控制、类结构复杂多变或对象创建频繁的场景下,使用反射可能带来性能下降、安全风险增加等问题,应谨慎选择。
41 9
|
1月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
71 1
|
1月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
44 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
26天前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
40 0
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
1月前
|
缓存 监控 Java
Java 线程池在高并发场景下有哪些优势和潜在问题?
Java 线程池在高并发场景下有哪些优势和潜在问题?
|
2月前
|
Java 数据处理