2018-07-09 13:29:16
运动员和教练案例
1 /*
2 教练和运动员案例(学生分析然后讲解)
3 乒乓球运动员和篮球运动员。
4 乒乓球教练和篮球教练。
5 为了出国交流,跟乒乓球相关的人员都需要学习英语。
6 请用所学知识:
7 分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。
8
9 整个分析过程,我是通过画图讲解的。
10 */
11 //定义一个说英语的接口
12 interface SpeakEnglish {
13 //说英语
14 public abstract void speak();
15 }
16
17 //定义人的抽象类
18 abstract class Person {
19 private String name;
20 private int age;
21
22 public Person() {}
23
24 public Person(String name,int age) {
25 this.name = name;
26 this.age = age;
27 }
28
29 public String getName() {
30 return name;
31 }
32
33 public void setName(String name) {
34 this.name = name;
35 }
36
37 public int getAge() {
38 return age;
39 }
40
41 public void setAge(int age) {
42 this.age = age;
43 }
44
45 //睡觉
46 public void sleep() {
47 System.out.println("人都是要睡觉的");
48 }
49
50 //吃饭
51 public abstract void eat();
52 }
53
54 //定义运动员抽象类
55 abstract class Player extends Person {
56 public Player() {}
57
58 public Player(String name,int age) {
59 super(name,age);
60 }
61
62 //学习
63 public abstract void study();
64 }
65
66 //定义教练抽象类
67 abstract class Coach extends Person {
68 public Coach() {}
69
70 public Coach(String name,int age) {
71 super(name,age);
72 }
73
74 //教
75 public abstract void teach();
76 }
77
78 //定义乒乓球运动员具体类
79 class PingPangPlayer extends Player implements SpeakEnglish {
80 public PingPangPlayer(){}
81
82 public PingPangPlayer(String name,int age) {
83 super(name,age);
84 }
85
86 //吃
87 public void eat() {
88 System.out.println("乒乓球运动员吃大白菜,喝小米粥");
89 }
90
91 //学习
92 public void study() {
93 System.out.println("乒乓球运动员学习如何发球和接球");
94 }
95
96 //说英语
97 public void speak() {
98 System.out.println("乒乓球运动员说英语");
99 }
100 }
101
102 //定义篮球运动员具体类
103 class BasketballPlayer extends Player {
104 public BasketballPlayer(){}
105
106 public BasketballPlayer(String name,int age) {
107 super(name,age);
108 }
109
110 //吃
111 public void eat() {
112 System.out.println("篮球运动员吃牛肉,喝牛奶");
113 }
114
115 //学习
116 public void study() {
117 System.out.println("篮球运动员学习如何运球和投篮");
118 }
119 }
120
121 //定义乒乓球教练具体类
122 class PingPangCoach extends Coach implements SpeakEnglish {
123 public PingPangCoach(){}
124
125 public PingPangCoach(String name,int age) {
126 super(name,age);
127 }
128
129 //吃
130 public void eat() {
131 System.out.println("乒乓球教练吃小白菜,喝大米粥");
132 }
133
134 //教
135 public void teach() {
136 System.out.println("乒乓球教练教如何发球和接球");
137 }
138
139 //说英语
140 public void speak() {
141 System.out.println("乒乓球教练说英语");
142 }
143 }
144
145 //定义篮球教练具体类
146 class BasketballCoach extends Coach {
147 public BasketballCoach(){}
148
149 public BasketballCoach(String name,int age) {
150 super(name,age);
151 }
152
153 //吃
154 public void eat() {
155 System.out.println("篮球教练吃羊肉,喝羊奶");
156 }
157
158 //教
159 public void teach() {
160 System.out.println("篮球教练教如何运球和投篮");
161 }
162 }
163
164 class InterfaceDemo {
165 public static void main(String[] args) {
166 //测试运动员(乒乓球运动员和篮球运动员)
167 //乒乓球运动员
168 PingPangPlayer ppp = new PingPangPlayer();
169 ppp.setName("王浩");
170 ppp.setAge(33);
171 System.out.println(ppp.getName()+"---"+ppp.getAge());
172 ppp.eat();
173 ppp.sleep();
174 ppp.study();
175 ppp.speak();
176 System.out.println("----------------");
177 //通过带参构造给数据(留给你们)
178
179 //篮球运动员
180 BasketballPlayer bp = new BasketballPlayer();
181 bp.setName("姚明");
182 bp.setAge(34);
183 System.out.println(bp.getName()+"---"+bp.getAge());
184 bp.eat();
185 bp.sleep();
186 bp.study();
187 //bp.speak(); //没有该方法
188
189 //测试教练自己做
190 }
191 }
形式参数:
基本类型:
引用类型:
类:
抽象类:
接口:
1 /*
2 形式参数:
3 基本类型(太简单,不是我今天要讲解的)
4 引用类型
5 类名:(匿名对象的时候其实我们已经讲过了) 需要的是该类的对象
6 抽象类:
7 接口
8 */
9 class Student {
10 public void study() {
11 System.out.println("Good Good Study,Day Day Up");
12 }
13 }
14
15 class StudentDemo {
16 public void method(Student s) { //ss; ss = new Student(); Student s = new Student();
17 s.study();
18 }
19 }
20
21 class StudentTest {
22 public static void main(String[] args) {
23 //需求:我要测试Student类的study()方法
24 Student s = new Student();
25 s.study();
26 System.out.println("----------------");
27
28 //需求2:我要测试StudentDemo类中的method()方法
29 StudentDemo sd = new StudentDemo();
30 Student ss = new Student();
31 sd.method(ss);
32 System.out.println("----------------");
33
34 //匿名对象用法
35 new StudentDemo().method(new Student());
36 }
37 }
形式参数:抽象类
抽象类:需要的是该抽象的类子类对象
1 /*
2 形式参数:
3 基本类型(太简单,不是我今天要讲解的)
4 引用类型
5 类名:(匿名对象的时候其实我们已经讲过了)需要的是该类的对象
6 抽象类:需要的是该抽象的类子类对象
7 接口
8 */
9 abstract class Person {
10 public abstract void study();
11 }
12
13 class PersonDemo {
14 public void method(Person p) {//p; p = new Student(); Person p = new Student(); //多态
15 p.study();
16 }
17 }
18
19 //定义一个具体的学生类
20 class Student extends Person {
21 public void study() {
22 System.out.println("Good Good Study,Day Day Up");
23 }
24 }
25
26 class PersonTest {
27 public static void main(String[] args) {
28 //目前是没有办法的使用的
29 //因为抽象类没有对应的具体类
30 //那么,我们就应该先定义一个具体类
31 //需求:我要使用PersonDemo类中的method()方法
32 PersonDemo pd = new PersonDemo();
33 Person p = new Student();
34 pd.method(p);
35 }
36 }
接口:需要的是该接口的实现类对象
1 /*
2 形式参数:
3 基本类型(太简单,不是我今天要讲解的)
4 引用类型
5 类名:(匿名对象的时候其实我们已经讲过了)需要的是该类的对象
6 抽象类:需要的是该抽象的类子类对象
7 接口:需要的是该接口的实现类对象
8 */
9 //定义一个爱好的接口
10 interface Love {
11 public abstract void love();
12 }
13
14 class LoveDemo {
15 public void method(Love l) { //l; l = new Teacher(); Love l = new Teacher(); 多态
16 l.love();
17 }
18 }
19
20 //定义具体类实现接口
21 class Teacher implements Love {
22 public void love() {
23 System.out.println("老师爱学生,爱Java,爱林青霞");
24 }
25 }
26
27 class TeacherTest {
28 public static void main(String[] args) {
29 //需求:我要测试LoveDemo类中的love()方法
30 LoveDemo ld = new LoveDemo();
31 Love l = new Teacher();
32 ld.method(l);
33 }
34 }
返回值类型
基本类型:
引用类型:
类:返回的是该类的对象
抽象类:返回的是该抽象类的子类对象
接口:
返回值类型 引用类型:类:返回的是该类的对象
返回值类型 引用类型:抽象类:返回的是该抽象类的子类对象