题目:
乒乓球运动员和篮球运动员。
乒乓球教练和篮球教练。
为了出国交流,跟乒乓球相关的人员都需要学习英语。
请用所学的知识:
分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。
这篇博客的主要目的是:
要明白在分析问题的时候,是从具体到抽象,在实现的时候是从抽象到具体,如果问题和人有关,那么抽象出来的类更多的以人为本(比如本例,可能有人会分析出乒乓球类,其实也没有问题,只是以人为本更好)。下面的代码并不重要,明白如何抽象出下图中的类就好了。
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(); } }