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


    运动员和教练案例图解

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

      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 }
  • 相关阅读:
    【Android Developers Training】 51. 序言:打印内容
    小米手机开发遇到的问题
    Linux进程的实际用户ID和有效用户ID
    Linux core 文件介绍
    Linux下内存的几个基本概念
    mingw libgcc_s_sjlj-1.dll is missing
    C语言函数申明关键字inline
    关于编译错误--提领指向不完全类型的指针
    linux下创建用户[转]
    Linux查看CPU和内存使用情况[转]
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/8453134.html
Copyright © 2020-2023  润新知