需求說明:
模擬教練員和運動員出國比賽場景,其中運動員包括乒乓球運動員和籃球運動員。教練員包括乒乓球教練和籃球教練。爲了方便出國交流,根乒乓球相關的人員都需要學習英語。具體分析如下:
(1)共同的屬性:姓名、年齡。
(2)共同的方法:喫飯。其中喫飯的內容兩者不同,所以採用抽象的方法。
(3)不同的方法:隊員練習,教練教導,分別寫入隊員類和教練類。
(4)接口:學習英語。
(5)抽象類:人類、運動員類、教練類、後兩者繼承自人類。
(6)具體類:乒乓球隊員類、教練類和籃球隊員類、教練類;分別繼承遠動員或教練類,其中乒乓球有關的擴展學習英語接口
程序運行結果:
實現思路:
(1)定義英語接口English,該接口中定義抽象方法speak(),返回值類型是void。
(2)定義抽象類Person,包括兩個成員變量,分別是name 和 age。name是String 類型,age是int類型。定義兩個構造方法,一個有參,一個無參。再定義一個抽象方法,eat(),返回值類型是void。最後定義一個show()方法,返回值是void。該方法中顯示名稱和年齡。
(3)定義抽象遠動員類Player,它繼承了Person抽象類。定義兩個構造方法一個有參,一個無參注意應用super。再定義一個抽象方法student()。返回值是void。這是運動員類特有的方法。
(4)定義抽象教練類Coach,它繼承了Person抽象類。定義兩個構造方法一個有參,一個無參注意應用super。再定義一個抽象方法teacher()。返回值是void。這是運動員類特有的方法。
(5)定義乒乓球運動員類PingpangPlayer。它繼承Player,同時實現English接口。
(6)定義乒乓球教練類PingpangCoach。它繼承Coach,同時實現English接口。
(7)定義籃球運動員類BasketballPlayer。它繼承Player。
(8)定義籃球教練類BasketballCoach。它繼承Coach。
(9)定義測試類Test,在主方法中,分別實例化不同運動員和教練員並調用各自的方法。
實現代碼:
English 接口:
//定義一個說英語的接口
public interface English {
//說英語
void speak();
}
Person 抽象類:
public abstract class Persion {
private String name;//姓名
private int age;//年齡
//無參構造
public Persion() {
}
//有參構造
public Persion(String name, int age) {
this.name = name;
this.age = age;
}
//喫飯的抽象方法
public abstract void eat();
//睡覺
public void sleep() {
System.out.println("人的要睡覺的");
}
//展示姓名和年齡
public void show() {
System.out.printf("姓名:%s\t年齡:%d",name,age);
System.out.println();
}
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;
}
}
Player 運動員類:
public abstract class Player extends Persion{
//無參構造
public Player() {
super();
}
//有參構造方法
public Player(String name,int age) {
super();
}
//運動員學習的抽象類
public abstract void student();
}
Coach 教練類:
public abstract class Coach extends Persion {
//無參構造
public Coach() {
super();
}
//有參構造方法
public Coach(String name,int age) {
super();
}
//教練教授的學習方法
public abstract void teacher();
}
PingpangPlayer 乒乓球運動員類:
public class PingpangPlayar extends Player implements English {
@Override
public void student() {
System.out.println("乒乓球運動員要練習發球和接球技巧");
}
@Override
public void eat() {
System.out.println("乒乓運動員喫清淡的飯菜");
}
@Override
public void speak() {
System.out.println("乒乓球運動員要學習英語");
}
}
PingpangCoach 乒乓球教練類:
public class PingpangCoach extends Coach implements English {
@Override
public void teacher() {
System.out.println("乒乓球教練要教導隊員發球和接球技巧");
}
@Override
public void eat() {
System.out.println("乒乓球教練跟着隊員喫清淡的飯菜");
}
@Override
public void speak() {
System.out.println("乒乓球教練要學習英語");
}
}
BasketballPlayer 籃球運動員類:
public class BasketballPlayer extends Player {
@Override
public void student() {
System.out.println("籃球運動員要練習運球和投籃技巧");
}
@Override
public void eat() {
System.out.println("籃球運動員要喫高蛋白的飯菜,保持健壯的身體");
}
}
BasketballCoach 籃球教練類:
public class BasketballCoach extends Coach {
@Override
public void teacher() {
System.out.println("籃球教練要跟着隊員,要喫高蛋白的飯菜");
}
@Override
public void eat() {
System.out.println("籃球教練要教導隊員運球和投籃技巧");
}
}
Test 測試類:
public class Test {
public static void main(String[] args) {
//實例化乒乓球運動員
PingpangPlayar pp = new PingpangPlayar();
pp.setName("馬明");
pp.setAge(26);
pp.show();
pp.eat();
pp.student();
pp.speak();
System.out.println("----------------------");
//實例化乒乓球教練
PingpangCoach pc = new PingpangCoach();
pc.setName("姚梁");
pc.setAge(38);
pc.show();
pc.eat();
pc.teacher();
pc.speak();
System.out.println("----------------------");
//實例化籃球運動員
BasketballPlayer bp = new BasketballPlayer();
bp.setName("劉國");
bp.setAge(41);
bp.show();
bp.eat();
bp.student();
System.out.println("----------------------");
//實例化籃球教練
BasketballCoach bc = new BasketballCoach();
bc.setName("傑克");
bc.setAge(42);
bc.show();
bc.eat();
bc.teacher();
}
}