前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类、抽象类、接口的综合小练习---运动员和教练案例

类、抽象类、接口的综合小练习---运动员和教练案例

作者头像
黑泽君
发布2018-10-11 16:46:40
6170
发布2018-10-11 16:46:40
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏

运动员和教练案例图解

文字分析和示例代码如下:

代码语言:javascript
复制
  1 /*
  2     运动员和教练案例:
  3         乒乓球运动员和篮球运动员。
  4         乒乓球教练和篮球教练。
  5         为了出国交流,跟乒乓球相关的人员都需要学习英语。
  6         请用所学知识:
  7         分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。
  8     
  9     整个分析过程,通过画图的讲解,如图所示:    
 10 -----------------------------------------------------------------------------    
 11     文字的讲解如下:
 12     分析:从具体到抽象
 13 ---------------------------------------        
 14         乒乓球运动员
 15             姓名,年龄
 16             吃饭,学习,睡觉
 17         篮球运动员
 18             姓名,年龄
 19             吃饭,学习,睡觉
 20         由于有共性功能,所以提取一个抽象运动员类:
 21         抽象运动员类
 22             姓名,年龄
 23             吃饭();
 24             学习();
 25             睡觉() {}
 26 ---------------------------------------    
 27         乒乓球教练
 28             姓名,年龄
 29             吃饭,教学,睡觉
 30         篮球教练
 31             姓名,年龄
 32             吃饭,教学,睡觉
 33         由于有共性功能,所以提取一个抽象教练类:
 34         抽象教练类
 35             姓名,年龄
 36             吃饭();
 37             教学();
 38             睡觉() {}
 39 ---------------------------------------            
 40         由于抽取后的抽象运动员类和抽象教练类还有共性功能,所以提取一个更抽象的人类:
 41         抽象人类:
 42             姓名,年龄
 43             吃饭();
 44             睡觉() {}
 45 ---------------------------------------            
 46         抽象运动员类:继承自抽象人类,但又有自己的抽象方法 学习();
 47         抽象教练类:继承自抽象人类,但又有自己的抽象方法 教学();
 48         
 49         学英语是一个扩展的功能,所以要定义一个接口。
 50         接口:
 51             说英语();
 52             
 53         乒乓球运动员:实现说英语    
 54         乒乓球教练:实现说英语
 55 -----------------------------------------------------------------------------
 56     实现:从抽象到具体
 57         说英语接口
 58         
 59         抽象人类
 60         抽象运动员类
 61         抽象教练类
 62         
 63         具体的说英语的乒乓球运动员类
 64         具体的篮球运动员类
 65         
 66         具体的说英语的乒乓球教练类
 67         具体的篮球教练类
 68         
 69         测试类
 70 -----------------------------------------------------------------------------
 71     使用:
 72         使用具体的说英语的乒乓球运动员类和说英语的乒乓球教练类
 73         以及具体的篮球运动员类和具体的篮球教练类进行测试。
 74 -----------------------------------------------------------------------------
 75 */
 76 //定义一个说英语的接口
 77 interface SpeakEnglish {
 78     //说英语
 79     public abstract void speak();
 80 }
 81 
 82 //定义抽象人类
 83 abstract class Person {
 84     private String name;
 85     private int age;
 86     
 87     public Person() {}
 88     
 89     public Person(String name, int age) {
 90         this.name = name;
 91         this.age = age;
 92     }
 93     
 94     public String getName() {
 95         return name;
 96     }
 97     
 98     public void setName(String name) {
 99         this.name = name;
100     }
101     
102     public int getAge() {
103         return age;
104     }
105     
106     public void setAge(int age) {
107         this.age = age;
108     }
109     
110     //睡觉都是一样的,所以为成员方法。
111     public void sleep() {
112         System.out.println("人都是要睡觉的");
113     }
114     
115     //吃饭是不一样的,所以为抽象方法。
116     public abstract void eat();
117 }
118 
119 //定义抽象运动员类,继承抽象人类
120 abstract class Player extends Person {
121     public Player() {}
122     
123     public Player(String name, int age) {
124         super(name, age);
125     }
126     
127     //学习的东西不一样,所以为抽象方法。
128     public abstract void study();
129 }
130 
131 //定义抽象教练类,继承抽象人类
132 abstract class Coach extends Person {
133     public Coach() {}
134     
135     public Coach(String name, int age) {
136         super(name, age);
137     }
138     
139     //教学的东西不一样,所以为抽象方法。
140     public abstract void teach();
141 }
142 
143 //定义具体的说英语的乒乓球运动员类
144 class PingPangPlayer extends Player implements SpeakEnglish {
145     public PingPangPlayer() {}
146     
147     public PingPangPlayer(String name, int age) {
148         super(name, age);
149     }
150     
151     //吃
152     public void eat() {
153         System.out.println("乒乓球运动员吃大白菜,喝小米粥");
154     }
155     
156     //学习
157     public void study() {
158         System.out.println("乒乓球运动员学习如何发球和接球");
159     }
160     
161     //说英语
162     public void speak() {
163         System.out.println("乒乓球运动员说英语");
164     }
165 }
166 
167 //定义具体的篮球运动员类
168 class BasketballPlayer extends Player {
169     public BasketballPlayer() {}
170     
171     public BasketballPlayer(String name, int age) {
172         super(name, age);
173     }
174     
175     //吃
176     public void eat() {
177         System.out.println("篮球运动员吃牛肉,喝牛奶");
178     }
179     
180     //学习
181     public void study() {
182         System.out.println("篮球运动员学习如何运球和投篮");
183     }
184 }
185 
186 //定义具体的说英语的乒乓球教练类
187 class PingPangCoach extends Coach implements SpeakEnglish {
188     public PingPangCoach() {}
189     
190     public PingPangCoach(String name, int age) {
191         super(name, age);
192     }
193     
194     //吃
195     public void eat() {
196         System.out.println("乒乓球教练吃小白菜,喝大米粥");
197     }
198     
199     //教
200     public void teach() {
201         System.out.println("乒乓球教练教如何发球和接球");
202     }
203     
204     //说英语
205     public void speak() {
206         System.out.println("乒乓球教练说英语");
207     }
208 }
209 
210 //定义具体的篮球教练类
211 class BasketballCoach extends Coach {
212     public BasketballCoach() {}
213     
214     public BasketballCoach(String name, int age) {
215         super(name, age);
216     }
217     
218     //吃
219     public void eat() {
220         System.out.println("篮球教练吃羊肉,喝羊奶");
221     }
222     
223     //教
224     public void teach() {
225         System.out.println("篮球教练教如何运球和投篮");
226     }
227 }
228 
229 //测试类
230 class InterfaceDemo {
231     public static void main(String[] args) {
232         //测试运动员(乒乓球运动员和篮球运动员)
233         //具体的说英语的乒乓球运动员类
234         PingPangPlayer ppp = new PingPangPlayer();
235         ppp.setName("王浩");
236         ppp.setAge(33);
237         System.out.println(ppp.getName()+"---"+ppp.getAge());
238         ppp.eat();
239         ppp.sleep();
240         ppp.study();
241         ppp.speak();
242         System.out.println("----------------");
243         //通过带参构造给数据
244         ppp = new PingPangPlayer("张继科", 35);
245         System.out.println(ppp.getName()+"---"+ppp.getAge());
246         ppp.eat();
247         ppp.sleep();
248         ppp.study();
249         ppp.speak();
250         System.out.println("----------------");
251         
252         //具体的篮球运动员类
253         BasketballPlayer bp = new BasketballPlayer();
254         bp.setName("姚明");
255         bp.setAge(34);
256         System.out.println(bp.getName()+"---"+bp.getAge());
257         bp.eat();
258         bp.sleep();
259         bp.study();
260         //bp.speak(); //报错,因为具体的篮球运动员类没有该方法。
261         System.out.println("----------------");
262         //通过带参构造给数据
263         bp = new BasketballPlayer("林书豪", 28);
264         System.out.println(bp.getName()+"---"+bp.getAge());
265         bp.eat();
266         bp.sleep();
267         bp.study();
268         System.out.println("----------------");
269         
270         //测试教练(乒乓球教练和篮球教练)
271         //具体的说英语的乒乓球教练类
272         PingPangCoach ppc = new PingPangCoach();
273         ppc.setName("刘国梁");
274         ppc.setAge(45);
275         System.out.println(ppc.getName()+"---"+ppc.getAge());
276         ppc.eat();
277         ppc.sleep();
278         ppc.teach();
279         ppc.speak();
280         System.out.println("----------------");
281         //通过带参构造给数据
282         ppc = new PingPangCoach("邓亚萍", 50);
283         System.out.println(ppc.getName()+"---"+ppc.getAge());
284         ppc.eat();
285         ppc.sleep();
286         ppc.teach();
287         ppc.speak();
288         System.out.println("----------------");
289         
290         //具体的篮球教练类
291         BasketballCoach bc = new BasketballCoach();
292         bc.setName("易建联");
293         bc.setAge(35);
294         System.out.println(bc.getName()+"---"+bc.getAge());
295         bc.eat();
296         bc.sleep();
297         bc.teach();
298         System.out.println("----------------");
299         //通过带参构造给数据
300         bc = new BasketballCoach("易建联", 35);
301         System.out.println(bc.getName()+"---"+bc.getAge());
302         bc.eat();
303         bc.sleep();
304         bc.teach();
305     }
306 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档