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

实现:从抽象到具体
1、定义说英语接口
package itheima_17; public interface LeanEnglish { void 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("人要吃饭"); } }
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("教乒乓球"); } }
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("学习乒乓球"); } }
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("篮球教练"); } }
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("学习英语"); } }
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("篮球运动员"); } }
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("乒乓球运动员"); } }
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 人要吃饭 乒乓球教练 学习英语

浙公网安备 33010602011771号