1 package InterfacePlayerAndCoach;
2
3 public abstract class Person {
4 private String name;
5 private int age;
6
7 public Person() {
8 }
9
10 public Person(String name, int age) {
11 this.name = name;
12 this.age = age;
13 }
14
15 public String getName() {
16 return name;
17 }
18
19 public void setName(String name) {
20 this.name = name;
21 }
22
23 public int getAge() {
24 return age;
25 }
26
27 public void setAge(int age) {
28 this.age = age;
29 }
30
31 public abstract void eat();
32 }
package InterfacePlayerAndCoach;
public abstract class Coach extends Person{
public Coach() {
}
public Coach(String name, int age) {
super(name, age);
}
public abstract void teach();
}
1 package InterfacePlayerAndCoach;
2
3 public class BasketballCoach extends Coach{
4 public BasketballCoach() {
5 }
6
7 public BasketballCoach(String name, int age) {
8 super(name, age);
9 }
10
11 @Override
12 public void teach() {
13 System.out.println("篮球教练教如何运球和投球");
14 }
15
16 @Override
17 public void eat() {
18 System.out.println("篮球教练吃羊肉,喝羊奶");
19 }
20 }
1 package InterfacePlayerAndCoach;
2
3 public interface SpeakEnglish {
4 public abstract void speak();
5 }
1 package InterfacePlayerAndCoach;
2
3 public class PingPangCoach extends Coach implements SpeakEnglish{
4 public PingPangCoach() {
5 }
6
7 public PingPangCoach(String name, int age) {
8 super(name, age);
9 }
10
11 @Override
12 public void teach() {
13 System.out.println("乒乓球教练教如何发球和接球");
14 }
15
16 @Override
17 public void eat() {
18 System.out.println("乒乓球教练吃小白菜,喝大米粥");
19 }
20
21 @Override
22 public void speak() {
23 System.out.println("乒乓球教练说英语");
24 }
25 }
1 package InterfacePlayerAndCoach;
2
3 public abstract class Player extends Person{
4 public Player() {
5 }
6
7 public Player(String name, int age) {
8 super(name, age);
9 }
10
11 public abstract void study();
12 }
1 package InterfacePlayerAndCoach;
2
3 public class BasketballPlayer extends Player{
4
5
6 public BasketballPlayer() {
7 }
8
9 public BasketballPlayer(String name, int age) {
10 super(name, age);
11 }
12
13 @Override
14 public void study() {
15 System.out.println("篮球运动员学习如何运球和投篮");
16 }
17
18 @Override
19 public void eat() {
20 System.out.println("篮球运动员吃牛肉,喝牛奶");
21 }
22 }
1 package InterfacePlayerAndCoach;
2
3 public class PingPangPlayer extends Player implements SpeakEnglish{
4 public PingPangPlayer() {
5 }
6
7 public PingPangPlayer(String name, int age) {
8 super(name, age);
1 package InterfacePlayerAndCoach;
2
3 public class PingPangCoach extends Coach implements SpeakEnglish{
4 public PingPangCoach() {
5 }
6
7 public PingPangCoach(String name, int age) {
8 super(name, age);
9 }
10
11 @Override
12 public void teach() {
13 System.out.println("乒乓球教练教如何发球和接球");
14 }
15
16 @Override
17 public void eat() {
18 System.out.println("乒乓球教练吃小白菜,喝大米粥");
19 }
20
21 @Override
22 public void speak() {
23 System.out.println("乒乓球教练说英语");
24 }
25 }
1 package InterfacePlayerAndCoach;
2 /*
3 运动员和教练
4
5 需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。
6 请用所学知识分析,这个案例中有哪些具体类,哪些是抽象类,哪些接口,并用代码实现
7 分析:从具体到抽象
8 乒乓球运动员
9 篮球运动员
10 乒乓球教练
11 篮球教练
12 实现:从抽象到具体
13 实现:使用的是具体的类的对象
14
15
16 思路:
17 1.定义说英语接口 成员方法:说英语();
18 2.定义抽象人类 成员变量:姓名,年龄;构造方法:无参,带参;成员方法:get/set方法,吃饭();
19 3.定义抽象教练类,继承人类 构造方法:无参,带参;成员方法:教学()
20 4.定义抽象运动员类,继承人类 构造方法:无参,带参;成员方法:学习()
21 5.定义具体篮球教练类,继承教练类 构造方法:无参,带参;成员方法:重写吃饭(){...},重写教学
22 6.定义具体乒乓球教练类,继承教练类,实现说英语接口
23 构造方法:无参,带参;成员方法:重写吃饭,重写教学,重写说英语
24 7.定义具体篮球运动员类,继承运动员类 构造方法:无参,带参;成员方法:重写吃饭,重写学习
25 8.定义具体乒乓球运动员类,继承运动员类,实现说英语接口
26 构造方法:无参,带参;成员方法:重写吃饭,重写学习,重写说英语
27 9.定义测试,写代码测试
28 * */
29 public class personDemo {
30 public static void main(String[] args) {
31 //创建对象
32 PingPangPlayer ppp = new PingPangPlayer();
33 ppp.setName("小明");
34 ppp.setAge(35);
35 System.out.println(ppp.getName()+","+ppp.getAge());
36 ppp.eat();
37 ppp.study();
38 ppp.speak();
39 System.out.println("---------");
40
41
42 BasketballPlayer bp = new BasketballPlayer();
43 bp.setName("姚明");
44 bp.setAge(40);
45 System.out.println(bp.getName()+","+bp.getAge());
46 bp.eat();
47 bp.study();
48 }
49 }
9 }
10
11 @Override
12 public void study() {
13 System.out.println("乒乓球运动员学习如何发球和接球");
14 }
15
16 @Override
17 public void eat() {
18 System.out.println("乒乓球运动员吃大白菜,喝小米粥");
19 }
20
21 @Override
22 public void speak() {
23 System.out.println("乒乓球运动员说英语");
24 }
25 }