第3节案例运动员和教练

需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员需要学习英语。

  请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现

  分析:从具体到抽象

 

 

   实现:从抽象到具体

 1、定义说英语接口

package itheima_17;

public interface LeanEnglish {
    void leanEnglish();
}
LeanEnglish

2、定义抽象人类

package itheima_17;

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

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

    public Person() {
    }

    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("人要吃饭");
    }
}
Person

3、定义抽象教练类,继承人类

package itheima_17;

public abstract class Coach extends Person{
    public Coach(String name, int age) {
        super(name, age);
    }

    public Coach() {
    }

    public void teachBasketball(){
        System.out.println("教篮球");
    }

    public void teachTableTennis(){
        System.out.println("教乒乓球");
    }
}
Coach

4、定义抽象运动员类,继承人类

package itheima_17;

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

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

    public void leaningBasketball(){
        System.out.println("学习篮球");
    }

    public void leaningTableTennis(){
        System.out.println("学习乒乓球");
    }
}
Athletes

5、定义具体篮球教练类,继承教练类

package itheima_17;

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

    public BasketballCoach() {
    }

    @Override
    public void teachBasketball() {
        System.out.println("篮球教练");
    }

}
BasketballCoach

6、定义具体乒乓球教练类,继承教练类,实现说英语接口

package itheima_17;

public class TableTennisCoach extends Coach implements LeanEnglish{

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

    public TableTennisCoach() {
    }

    @Override
    public void teachTableTennis() {
        System.out.println("乒乓球教练");
    }

    @Override
    public void leanEnglish() {
        System.out.println("学习英语");
    }
}
TableTennisCoach

7、定义具体篮球运动员类,继承运动员类

package itheima_17;

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

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

    @Override
    public void leaningBasketball() {
        System.out.println("篮球运动员");
    }
}
BasketballPlayer

8、定义具体乒乓球运动员类,继承运动员类,实现说英语接口

package itheima_17;

public class TableTennisPlayer extends Athletes implements LeanEnglish{
    public TableTennisPlayer() {
    }

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

    @Override
    public void leanEnglish() {
        System.out.println("学习英语");
    }

    @Override
    public void leaningTableTennis() {
        System.out.println("乒乓球运动员");
    }
}
TableTennisPlayer

9、定义测试类,写代码测试

package itheima_17;

public class CoachesAndAthletesDemo {
    public static void main(String[] args) {
        BasketballPlayer basketballPlayer=new BasketballPlayer();
        basketballPlayer.setName("林书豪");
        basketballPlayer.setAge(31);
        System.out.println(basketballPlayer.getName()+","+basketballPlayer.getAge());
        basketballPlayer.eat();
        basketballPlayer.leaningBasketball();

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

        BasketballCoach basketballCoach=new BasketballCoach("邓肯",40);
        System.out.println(basketballCoach.getName()+","+basketballCoach.getAge());
        basketballCoach.eat();
        basketballCoach.teachBasketball();

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

        TableTennisPlayer tableTennisPlayer=new TableTennisPlayer("张继科",33);
        System.out.println(tableTennisPlayer.getName()+","+tableTennisPlayer.getAge());
        tableTennisPlayer.eat();
        tableTennisPlayer.leaningTableTennis();
        tableTennisPlayer.leanEnglish();

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

        TableTennisCoach tableTennisCoach=new TableTennisCoach();
        tableTennisCoach.setName("刘国正");
        tableTennisCoach.setAge(50);
        System.out.println(tableTennisCoach.getName()+","+tableTennisCoach.getAge());
        tableTennisCoach.eat();
        tableTennisCoach.teachTableTennis();
        tableTennisCoach.leanEnglish();
    }
}

10、测试结果

林书豪,31
人要吃饭
篮球运动员
------
邓肯,40
人要吃饭
篮球教练
-------
张继科,33
人要吃饭
乒乓球运动员
学习英语
-------
刘国正,50
人要吃饭
乒乓球教练
学习英语

 

posted @ 2021-03-03 22:00  Testtext  阅读(325)  评论(0)    收藏  举报