案例:运动员和教练

案例:运动员和教练

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

  1. …:代表无惨,带参构造器,
  2. 接口:英语接口,抽象方法是:说英语()
  3. 定义抽象人类:姓名,年龄…以及get/set方法,吃饭方法
  4. 定义教练类,继承人类: …教()
  5. 定义运动员类,继承人类:。。。。学习()
  6. 定义具体的篮球教练类,继承教练类: … 重写吃饭,教
  7. 定义具体的乒乓球教练类,继承教练类,实现说英语接口: …重写吃饭方法(){} 教(){} 重写英语方法(){}
  8. 定义具体的篮球运动员类,继承运动员类:… 重写吃饭方法(){},重写学习方法(){}
  9. 定义具体的乒乓球运动员类,继承运动员类,实现说英语接口:… 重写吃饭方法(){},重写学习方法(){},重写说英语方法(){}
  10. 定义测试类,写代码测试

方法:

  1. 分析方法: 一定从具体到抽象!!!由底向上
  2. 实现方法: 一定是从抽象到具体!! 由上到底
    == !!!!! 使用(测试):使用的是具体的类的对象==

各层关系结构:
柏维怡
代码实现图:
注意接口和抽象类图标
柏维怡

代码块:

SpeakEnglish(接口)

package CCom.Cnn;

public interface SpeakEnglish {
    void english();//提供说英语行为方法(可采纳不采纳)
}

Coach(抽象类)

package CCom.Cnn;

public abstract class Coach extends Person {
    public Coach() {
    }

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

    public abstract void Coach();
}

Player(抽象类)

package CCom.Cnn;

public abstract class Player extends Person{
    public Player() {
    }

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

    public abstract void play();
}

Person(抽象类)

package CCom.Cnn;

public abstract class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(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("吃");
    }
}

BasketballCoach(具体类)

package CCom.Cnn;

public class BasketballCoach extends Coach{
    public BasketballCoach() {
    }

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

    @Override
    public void Coach() {
        System.out.println("教如何三步上篮");
    }

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

BasketballPlayer(具体类)

package CCom.Cnn;

public class BasketballPlayer extends Player {
    public BasketballPlayer() {
    }

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

    @Override
    public void eat() {
        System.out.println("打完球吃饭");
    }

    @Override
    public void play() {
        System.out.println("正在打篮球");
    }
}

PingPangCoach(具体类)

package CCom.Cnn;

public class PingPangCoach extends Coach implements SpeakEnglish{
    public PingPangCoach() {
    }

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

    @Override
    public void Coach() {
        System.out.println("教我们打乒乓球");
    }

    @Override
    public void english() {
        System.out.println("正在说英语");
    }

    @Override
    public void eat() {
        System.out.println("教练正在吃饭");
    }
}

PingPangPlayer(具体类)

package CCom.Cnn;

public class PingPangPlayer extends Player implements SpeakEnglish{
    public PingPangPlayer() {
    }

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

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

    @Override
    public void play() {
        System.out.println("正在打乒乓");
    }

    @Override
    public void english() {
        System.out.println("说英语");
    }
}

Demo测试类

package CCom.Cnn;
public class Demo {
    public static void main(String[] args) {
           //带参构造和属性私有分别写一下,并且注意了一定采用继承方式来使用实现!!
           //继承方式是为了减少反复使用重复的代码

        //1
        BasketballCoach b = new BasketballCoach("沸羊羊",17);
        System.out.println(b.getName()+b.getAge());
        b.eat();
        b.Coach();
        System.out.println("------------------");

        //2
        BasketballPlayer b2=new BasketballPlayer();
        b2.setName("美羊羊");
        b2.setAge(18);
        System.out.println(b2.getName()+b2.getAge());
        b2.eat();
        b2.play();

        System.out.println("------------------");

        //3
        PingPangCoach p=new PingPangCoach("喜羊羊",19);
        System.out.println(p.getName()+p.getAge());
        p.eat();
        p.Coach();
        p.english();

        //4       八嘎呀路   最后一个自己写去
    }
}

输出的结果:
沸羊羊17
教练吃饭
教如何三步上篮

美羊羊18
打完球吃饭
正在打篮球

喜羊羊19
教练正在吃饭
教我们打乒乓球
正在说英语

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发热的嘤嘤怪(2003计科胜胜同学)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值