运动员和教练(接口实现)

26 篇文章 0 订阅
14 篇文章 0 订阅

需求:
我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现

分析:

我们在看需求的时候一定要从具体到抽象;

这个需求里的具体无非就是四个类代表四种对象,即:乒乓球运动员、篮球运动员、乒乓球教练、篮球教练。
提取出共性类: 运动员、教练、学习、教学;人;

实现:
在这里插入图片描述

在这里插入图片描述

接口:

package Sport;

public interface English {

    //成员方法(抽象方法)
    public abstract void speakEnglish();
}

人类:

package Sport;

public abstract class Human {

    //成员变量
    private String name;
    private int age;

    //构造方法
    public Human() {}

    public Human(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //成员方法

    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 void eat(){
        System.out.println("人是铁饭是钢,一顿不吃下顿吃");
    }
}

教练类:

package Sport;

public abstract class Coach extends Human{

    //构造方法
    public Coach() {}

    public Coach(String name, int age) {
        super(name, age);
    }

    //成员方法
    public void teach(){}
}

运动员类:

package Sport;

public abstract class Athlete extends Human{

    //构造方法
    public Athlete() {}

    public Athlete(String name, int age) {
        super(name, age);
    }

    //成员方法
    public void learn(){}
}

篮球教练:

package Sport;

public class BaskectballCoach extends Coach{

    //构造方法
    public BaskectballCoach() {
    }
    public BaskectballCoach(String name, int age) {
        super(name, age);
    }

    //成员方法
    @Override
    public void eat(){
        System.out.println("篮球教练吃");
    }

    @Override
    public void teach(){
        System.out.println("教三步跨栏");
    }
}

篮球运动员:

package Sport;

public class BaskectballPlayer extends Athlete{

    public BaskectballPlayer() {
    }

    public BaskectballPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat(){
        System.out.println("gxhj" );
    }
}

乒乓球教练:

package Sport;

public class PingBangCoach extends Coach implements English{

    //构造方法
    public PingBangCoach() {
    }

    public PingBangCoach(String name, int age) {
        super(name, age);
    }

    //成员方法
    @Override
    public void speakEnglish(){
        System.out.println("教练说英语");
    }

    @Override
    public void eat(){
        System.out.println("png吃" );
    }

}

乒乓球运动员:

package Sport;

public class PingBangPlayer extends Athlete implements English{

    @Override
    public void speakEnglish(){
        System.out.println("yy");
    }

    @Override
    public void eat(){
        System.out.println("说");
    }

    public PingBangPlayer() {
    }

    public PingBangPlayer(String name, int age) {
        super(name, age);
    }
}

测试类:

package Sport;

public class Demo {
    public static void main(String[] args) {

        BaskectballCoach bc = new BaskectballCoach("科比",34);
        System.out.println(bc.getName()+" "+bc.getAge());
        bc.teach();
        bc.eat();

        BaskectballPlayer bp = new BaskectballPlayer("姚明",26);
        System.out.println(bp.getName()+" "+bp.getAge());
        bp.eat();
        bp.learn();

        PingBangCoach pc = new PingBangCoach("刘国梁",36);
        System.out.println(pc.getName()+" "+pc.getAge());
        pc.eat();
        pc.teach();
        pc.speakEnglish();

    }
}

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开课实验室:现代信息交流中心403 开课时间: 2019年**月**日 实验报告: 2019年 11月 9日 "学院 "信息工程学"年级、 "软件1803班 "学号 "20180822 " "名称 "院 "专业、 " " " " " " "班 " " " " "实验类型 "验证 综合 设计 创新 "成绩 " " "" " "师"师签名: " "评"年 月 日 " "语" " 1. 实验目的:熟悉和掌握Java中的面向对象编程,包括类、继承和多态等面向对象方法 。 2. 实验内容: 1. 编写一个圆类Circle,该类拥有: (1)属性radius; (2)构造方法Circle()和Circle(double r) (3)成员方法: double getArea() double getPerimeter() void show()//显示半径、周长和面积 编写一个圆柱体Cylinder,它继承上面的Circle类,还拥有: (1)属性hight (2)构造方法Cylinder(double r, double h) (3)成员方法 double getVolume() void showVolume() 编写测试类,创建上面两个类的对象,并运行其中的方法。 2. 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NumOfWheels方法,用 于显示车轮的数量。 创建两个类Car和Motorbike从Vehicle类继承,并在这两个类中实现NumOfWheels方法。 在Car类中,应当显示"四轮车"信息; 而在Motorbike类中,应当显示"双轮车"信息。 创建一个带main方法的类,在该类中创建Car和Motorbike的实例,并在控制台中显示消 息。 3. 采用类、继承、接口等面向对象思维来设计教练运动员: (1)乒乓球运动员篮球运动员 (2)乒乓球教练篮球教练 (3)为了出国交流,跟乒乓球相关的人员都需要学习英语。 提示:重点考虑类中属性、方法和类间层次关系,并编程实现。 3. 源代码清单: 1.源代码清单 package text1; public class Circle { double radius; Circle(){ radius=0; } Circle(double radius){ this.radius=radius; } double getArea(){ return radius*radius*Math.PI; } double getPerimeter(){ return radius*Math.PI*2; } void show(){ System.out.println("半径:"+radius+"周长:"+getPerimeter()+"面积:"+getArea( )); } } public class Cylinder extends Circle{ double hight; Cylinder(double r, double h){ this.radius=r; this.hight=h; } double getVolume(){ return getArea()*hight; } void showVolume(){ System.out.println("体积:"+getVolume()); } public static void main(String args[]) { Circle a = new Circle(4); Cylinder b= new Cylinder(4,6); a.show(); b.showVolume(); } } 2.源代码清单 package text1; abstract class Vehicle { abstract void NumOfWheels(); } public class Car extends Vehicle{ void NumOfWheels(){ System.out.println("四轮车"); } } public class Motorbike extends Vehicle{ void NumOfWheels(){ System.out.println("双轮车"); } public static void main(String args[]){ Car a = new Car(); Motorbike b= new Motorbike(); a.NumOfWheels(); b.NumOfWheels(); } } 3. 源代码清单 package shiyan3; abstract class person { public void show() { Syst
好的,这个运动员教练的模拟可以使用抽象类和接口实现。我们可以定义一个抽象类 `Person`,里面包含姓名和年龄两个属性,以及一个抽象方法 `run()`。然后,我们可以创建两个类 `Athlete` 和 `Coach`,分别继承 `Person` 抽象类,并实现 `run()` 方法。 另外,我们可以定义一个接口 `Teachable`,里面包含一个抽象方法 `teach()`。然后,我们可以让 `Coach` 类实现 `Teachable` 接口,并重写 `teach()` 方法。 下面是一个示例代码: ```java abstract class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public abstract void run(); public String getName() { return name; } public int getAge() { return age; } } class Athlete extends Person { public Athlete(String name, int age) { super(name, age); } @Override public void run() { System.out.println(getName() + "正在跑步!"); } } interface Teachable { void teach(); } class Coach extends Person implements Teachable { public Coach(String name, int age) { super(name, age); } @Override public void run() { System.out.println(getName() + "正在指导运动员跑步!"); } @Override public void teach() { System.out.println(getName() + "正在授运动技能!"); } } public class Main { public static void main(String[] args) { Athlete athlete = new Athlete("张三", 20); Coach coach = new Coach("李四", 40); athlete.run(); coach.run(); coach.teach(); } } ``` 这里我们定义了一个抽象类 `Person`,并让 `Athlete` 和 `Coach` 两个类继承它。在 `Person` 类中,我们定义了姓名和年龄两个属性,以及一个抽象方法 `run()`。 在 `Athlete` 类中,我们重写了 `run()` 方法,实现运动员的跑步功能。在 `Coach` 类中,我们实现了 `Teachable` 接口,并重写了 `run()` 和 `teach()` 方法,实现教练的指导运动员授运动技能的功能。 在 `Main` 类中,我们创建了一个运动员和一个教练的对象,并分别调用它们的 `run()` 方法和教练的 `teach()` 方法,输出对应的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值