需求:
我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现
分析:
我们在看需求的时候一定要从具体到抽象;
这个需求里的具体无非就是四个类代表四种对象,即:乒乓球运动员、篮球运动员、乒乓球教练、篮球教练。
提取出共性类: 运动员、教练、学习、教学;人;
实现:
接口:
package Sport;
public interface English {
//成员方法(抽象方法)
public abstract void speakEnglish();
}
人类:
package Sport;
public abstract class Human {
//成员变量
private String name;
private int age;
//构造方法
public Human() {}
public Human(String name, int age) {
this.name = name;
this.age = age;
}
//成员方法
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("人是铁饭是钢,一顿不吃下顿吃");
}
}
教练类:
package Sport;
public abstract class Coach extends Human{
//构造方法
public Coach() {}
public Coach(String name, int age) {
super(name, age);
}
//成员方法
public void teach(){}
}
运动员类:
package Sport;
public abstract class Athlete extends Human{
//构造方法
public Athlete() {}
public Athlete(String name, int age) {
super(name, age);
}
//成员方法
public void learn(){}
}
篮球教练:
package Sport;
public class BaskectballCoach extends Coach{
//构造方法
public BaskectballCoach() {
}
public BaskectballCoach(String name, int age) {
super(name, age);
}
//成员方法
@Override
public void eat(){
System.out.println("篮球教练吃");
}
@Override
public void teach(){
System.out.println("教三步跨栏");
}
}
篮球运动员:
package Sport;
public class BaskectballPlayer extends Athlete{
public BaskectballPlayer() {
}
public BaskectballPlayer(String name, int age) {
super(name, age);
}
@Override
public void eat(){
System.out.println("gxhj" );
}
}
乒乓球教练:
package Sport;
public class PingBangCoach extends Coach implements English{
//构造方法
public PingBangCoach() {
}
public PingBangCoach(String name, int age) {
super(name, age);
}
//成员方法
@Override
public void speakEnglish(){
System.out.println("教练说英语");
}
@Override
public void eat(){
System.out.println("png吃" );
}
}
乒乓球运动员:
package Sport;
public class PingBangPlayer extends Athlete implements English{
@Override
public void speakEnglish(){
System.out.println("yy");
}
@Override
public void eat(){
System.out.println("说");
}
public PingBangPlayer() {
}
public PingBangPlayer(String name, int age) {
super(name, age);
}
}
测试类:
package Sport;
public class Demo {
public static void main(String[] args) {
BaskectballCoach bc = new BaskectballCoach("科比",34);
System.out.println(bc.getName()+" "+bc.getAge());
bc.teach();
bc.eat();
BaskectballPlayer bp = new BaskectballPlayer("姚明",26);
System.out.println(bp.getName()+" "+bp.getAge());
bp.eat();
bp.learn();
PingBangCoach pc = new PingBangCoach("刘国梁",36);
System.out.println(pc.getName()+" "+pc.getAge());
pc.eat();
pc.teach();
pc.speakEnglish();
}
}
测试结果: