Skip to content

Commit dcf59ab

Browse files
committed
接口与抽象类练习
1 parent 14602bd commit dcf59ab

File tree

1 file changed

+33
-51
lines changed
  • src/main/java/com/github/hcsp/polymorphism

1 file changed

+33
-51
lines changed

src/main/java/com/github/hcsp/polymorphism/World.java

Lines changed: 33 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,120 +6,102 @@
66
public class World {
77
// 现在有若干种对象,请尝试使用接口和抽象类将它们建造成类型体系
88
// 以最大限度的复用、简化代码
9+
public static void main(String[] args) {
10+
会飞的东西飞();
11+
会叫的东西叫();
12+
动物都能新陈代谢();
13+
}
914
public static List<Object> objects =
1015
Arrays.asList(new 麻雀(), new 喜鹊(), new 蝴蝶(), new 飞机(), new 救护车(), new (), new ());
1116
// 在建造成类型体系后,请尝试化简这个啰嗦的方法,体会多态带来的好处
1217
public static void 会飞的东西飞() {
1318
for (Object obj : objects) {
14-
if (obj instanceof 麻雀) {
15-
((麻雀) obj).();
16-
} else if (obj instanceof 喜鹊) {
17-
((喜鹊) obj).();
18-
} else if (obj instanceof 蝴蝶) {
19-
((蝴蝶) obj).();
20-
} else if (obj instanceof 飞机) {
21-
((飞机) obj).();
19+
if (obj instanceof 会飞的东西) {
20+
((会飞的东西) obj).();
2221
}
2322
}
2423
}
2524
// 在建造成类型体系后,请尝试化简这个啰嗦的方法,体会多态带来的好处
2625
public static void 会叫的东西叫() {
2726
for (Object obj : objects) {
28-
if (obj instanceof 麻雀) {
29-
((麻雀) obj).();
30-
} else if (obj instanceof 喜鹊) {
31-
((喜鹊) obj).();
32-
} else if (obj instanceof 救护车) {
33-
((救护车) obj).();
34-
} else if (obj instanceof ) {
35-
(() obj).();
36-
} else if (obj instanceof ) {
37-
(() obj).();
27+
if (obj instanceof 会叫的东西) {
28+
((会叫的东西) obj).();
3829
}
3930
}
4031
}
4132
// 在建造成类型体系后,请尝试化简这个啰嗦的方法,体会多态带来的好处
4233
public static void 动物都能新陈代谢() {
4334
for (Object obj : objects) {
44-
if (obj instanceof 麻雀) {
45-
((麻雀) obj).新陈代谢();
46-
} else if (obj instanceof 喜鹊) {
47-
((喜鹊) obj).新陈代谢();
48-
} else if (obj instanceof 蝴蝶) {
49-
((蝴蝶) obj).新陈代谢();
50-
} else if (obj instanceof ) {
51-
(() obj).新陈代谢();
52-
} else if (obj instanceof ) {
53-
(() obj).新陈代谢();
35+
if (obj instanceof 活的动物) {
36+
((活的动物) obj).新陈代谢();
5437
}
5538
}
5639
}
5740

58-
static class 麻雀 {
41+
static class 活的动物 implements 动物{
5942
public void 新陈代谢() {
6043
System.out.println("新陈代谢");
6144
}
45+
}
6246

47+
static class extends 活的动物 implements 会飞的东西,会叫的东西{
6348
public void () {
6449
System.out.println("鸟儿飞");
6550
}
66-
6751
public void () {
68-
System.out.println("叽叽喳喳");
52+
System.out.println("鸟叫");
6953
}
7054
}
7155

72-
static class 喜鹊 {
73-
public void 新陈代谢() {
74-
System.out.println("新陈代谢");
56+
static class 麻雀 extends {
57+
@Override
58+
public void () {
59+
System.out.println("叽叽喳喳");
7560
}
7661

62+
@Override
7763
public void () {
78-
System.out.println("鸟儿飞");
64+
System.out.println("麻雀飞");
7965
}
66+
}
8067

68+
static class 喜鹊 extends {
69+
@Override
8170
public void () {
8271
System.out.println("叽叽喳喳");
8372
}
84-
}
8573

86-
static class 蝴蝶 {
87-
public void 新陈代谢() {
88-
System.out.println("新陈代谢");
74+
@Override
75+
public void () {
76+
System.out.println("喜鹊飞");
8977
}
78+
}
9079

80+
static class 蝴蝶 extends 活的动物 implements 会飞的东西{
9181
public void () {
9282
System.out.println("蝴蝶飞");
9383
}
9484
}
9585

96-
static class 飞机 {
86+
static class 飞机 implements 会飞的东西{
9787
public void () {
9888
System.out.println("飞机飞");
9989
}
10090
}
10191

102-
static class 救护车 {
92+
static class 救护车 implements 会叫的东西{
10393
public void () {
10494
System.out.println("哇呜哇呜");
10595
}
10696
}
10797

108-
static class {
109-
public void 新陈代谢() {
110-
System.out.println("新陈代谢");
111-
}
112-
98+
static class extends 活的动物 implements 会叫的东西{
11399
public void () {
114100
System.out.println("喵喵喵");
115101
}
116102
}
117103

118-
static class {
119-
public void 新陈代谢() {
120-
System.out.println("新陈代谢");
121-
}
122-
104+
static class extends 活的动物 implements 会叫的东西{
123105
public void () {
124106
System.out.println("汪汪汪");
125107
}

0 commit comments

Comments
 (0)