• 教练和运动员案例


    题目:

      乒乓球运动员和篮球运动员。

      乒乓球教练和篮球教练。

      为了出国交流,跟乒乓球相关的人员都需要学习英语。

      请用所学的知识:

        分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。

    这篇博客的主要目的是:

      要明白在分析问题的时候,是从具体到抽象,在实现的时候是从抽象到具体,如果问题和人有关,那么抽象出来的类更多的以人为本(比如本例,可能有人会分析出乒乓球类,其实也没有问题,只是以人为本更好)。下面的代码并不重要,明白如何抽象出下图中的类就好了。

     

    interface SpeakEnglish {
        // speak English
        public abstract void speak();
    }
    
    abstract class Person {
        private String mName;
        private int mAge;
        
        public Person() {}
        
        public Person(String name, int age) {
            mName = name;
            mAge = age;
        }
        
        public void setName(String name) {
            mName = name;
        }
        
        public String getName() {
            return mName;
        }
    
        public void setAge(int age) {
            mAge = age;
        }
        
        public int getAge() {
            return mAge;
        }
        
        // sleep
        public void sleep() {
            System.out.println("sleep");
        }
        
        // eat
        public abstract void eat();
    }
    
    abstract class Player extends Person{
        public Player() {}
        
        public Player(String name, int age) {
            super(name, age);
        }
        
        // study
        public abstract void study();
    }
    
    abstract class Coach extends Person{
        public Coach() {}
        
        public Coach(String name, int age) {
            super(name, age);
        }
        
        // teach
        public abstract void teach();
    }
    
    class PingPangPlayer extends Player implements SpeakEnglish {
        public PingPangPlayer() {}
        
        public PingPangPlayer(String name, int age) {
            super(name, age);
        }
        
        @Override
        public void eat() {
            System.out.println("PingPangPlayer eat Chinese cabbage and drink millet gruel.");
        }
        
        @Override
        public void study() {
            System.out.println("PingPangPlayer learn how to serve and dribble.");
        }
        
        public void speak() {
            System.out.println("PingPangPlayer speak English.");
        }
    }
    
    class BasketballPlayer extends Player {
        public BasketballPlayer() {}
        
        public BasketballPlayer(String name, int age) {
            super(name, age);
        }
        
        @Override
        public void eat() {
            System.out.println("BasketballPlayer eat beef and drink milk.");
        }
        
        @Override
        public void study() {
            System.out.println("BasketballPlayer learn how to dribble.");
        }
    }
    
    class PingPangCoach extends Coach implements SpeakEnglish {
        public PingPangCoach() {}
        
        public PingPangCoach(String name, int age) {
            super(name, age);
        }
        
        @Override
        public void eat() {
            System.out.println("PingPangCoach eat mill Chinese cabbage and drink eice porridge.");
        }
        
        @Override
        public void teach() {
            System.out.println("PingPangCoach teach how to serve and dribble.");
        }
        
        public void speak() {
            System.out.println("PingPangCoach speak English.");
        }
    }
    
    class BasketballCoach extends Player {
        public BasketballCoach() {}
        
        public BasketballCoach(String name, int age) {
            super(name, age);
        }
        
        @Override
        public void eat() {
            System.out.println("BasketballCoach eat mutton and drink goats' milk.");
        }
        
        @Override
        public void study() {
            System.out.println("BasketballCoach teach how to dribble.");
        }
    }
    
    public class Test {
        
        public static void main(String[] args) {
            // test palyer
            PingPangPlayer pingPangPlayer = new PingPangPlayer();
            pingPangPlayer.setName("wanghao");
            pingPangPlayer.setAge(33);
            System.out.println(pingPangPlayer.getName()+"-------"+pingPangPlayer.getAge());
            pingPangPlayer.eat();
            pingPangPlayer.sleep();
            pingPangPlayer.study();
        }
    }
  • 相关阅读:
    IL汇编语言介绍(译)
    开源搜索框架Lucene学习系列
    【转】autoHeight为true的时候,autoScroll为true就不起作用了
    [转]反注册 Regsvr32命令应用大全
    [转]sun.misc.BASE64Encoder找不到的解决方法
    mysql数据库导入导出
    【转】MySQL 与MS SQL Server数据库使用多表关联Update时语法的区别
    CRT detected that the application wrote to memory after end of heap buffer
    魔兽争霸窗口化
    GROUP_CONCAT函数
  • 原文地址:https://www.cnblogs.com/chen-cai/p/9900441.html
Copyright © 2020-2023  润新知