|
6 | 6 | public class World {
|
7 | 7 | // 现在有若干种对象,请尝试使用接口和抽象类将它们建造成类型体系
|
8 | 8 | // 以最大限度的复用、简化代码
|
| 9 | + public static void main(String[] args) { |
| 10 | + 会飞的东西飞(); |
| 11 | + 会叫的东西叫(); |
| 12 | + 动物都能新陈代谢(); |
| 13 | + } |
9 | 14 | public static List<Object> objects =
|
10 | 15 | Arrays.asList(new 麻雀(), new 喜鹊(), new 蝴蝶(), new 飞机(), new 救护车(), new 猫(), new 狗());
|
11 | 16 | // 在建造成类型体系后,请尝试化简这个啰嗦的方法,体会多态带来的好处
|
12 | 17 | public static void 会飞的东西飞() {
|
13 | 18 | 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).飞(); |
22 | 21 | }
|
23 | 22 | }
|
24 | 23 | }
|
25 | 24 | // 在建造成类型体系后,请尝试化简这个啰嗦的方法,体会多态带来的好处
|
26 | 25 | public static void 会叫的东西叫() {
|
27 | 26 | 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).叫(); |
38 | 29 | }
|
39 | 30 | }
|
40 | 31 | }
|
41 | 32 | // 在建造成类型体系后,请尝试化简这个啰嗦的方法,体会多态带来的好处
|
42 | 33 | public static void 动物都能新陈代谢() {
|
43 | 34 | 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).新陈代谢(); |
54 | 37 | }
|
55 | 38 | }
|
56 | 39 | }
|
57 | 40 |
|
58 |
| - static class 麻雀 { |
| 41 | + static class 活的动物 implements 动物{ |
59 | 42 | public void 新陈代谢() {
|
60 | 43 | System.out.println("新陈代谢");
|
61 | 44 | }
|
| 45 | + } |
62 | 46 |
|
| 47 | + static class 鸟 extends 活的动物 implements 会飞的东西,会叫的东西{ |
63 | 48 | public void 飞() {
|
64 | 49 | System.out.println("鸟儿飞");
|
65 | 50 | }
|
66 |
| - |
67 | 51 | public void 叫() {
|
68 |
| - System.out.println("叽叽喳喳"); |
| 52 | + System.out.println("鸟叫"); |
69 | 53 | }
|
70 | 54 | }
|
71 | 55 |
|
72 |
| - static class 喜鹊 { |
73 |
| - public void 新陈代谢() { |
74 |
| - System.out.println("新陈代谢"); |
| 56 | + static class 麻雀 extends 鸟{ |
| 57 | + @Override |
| 58 | + public void 叫() { |
| 59 | + System.out.println("叽叽喳喳"); |
75 | 60 | }
|
76 | 61 |
|
| 62 | + @Override |
77 | 63 | public void 飞() {
|
78 |
| - System.out.println("鸟儿飞"); |
| 64 | + System.out.println("麻雀飞"); |
79 | 65 | }
|
| 66 | + } |
80 | 67 |
|
| 68 | + static class 喜鹊 extends 鸟{ |
| 69 | + @Override |
81 | 70 | public void 叫() {
|
82 | 71 | System.out.println("叽叽喳喳");
|
83 | 72 | }
|
84 |
| - } |
85 | 73 |
|
86 |
| - static class 蝴蝶 { |
87 |
| - public void 新陈代谢() { |
88 |
| - System.out.println("新陈代谢"); |
| 74 | + @Override |
| 75 | + public void 飞() { |
| 76 | + System.out.println("喜鹊飞"); |
89 | 77 | }
|
| 78 | + } |
90 | 79 |
|
| 80 | + static class 蝴蝶 extends 活的动物 implements 会飞的东西{ |
91 | 81 | public void 飞() {
|
92 | 82 | System.out.println("蝴蝶飞");
|
93 | 83 | }
|
94 | 84 | }
|
95 | 85 |
|
96 |
| - static class 飞机 { |
| 86 | + static class 飞机 implements 会飞的东西{ |
97 | 87 | public void 飞() {
|
98 | 88 | System.out.println("飞机飞");
|
99 | 89 | }
|
100 | 90 | }
|
101 | 91 |
|
102 |
| - static class 救护车 { |
| 92 | + static class 救护车 implements 会叫的东西{ |
103 | 93 | public void 叫() {
|
104 | 94 | System.out.println("哇呜哇呜");
|
105 | 95 | }
|
106 | 96 | }
|
107 | 97 |
|
108 |
| - static class 猫 { |
109 |
| - public void 新陈代谢() { |
110 |
| - System.out.println("新陈代谢"); |
111 |
| - } |
112 |
| - |
| 98 | + static class 猫 extends 活的动物 implements 会叫的东西{ |
113 | 99 | public void 叫() {
|
114 | 100 | System.out.println("喵喵喵");
|
115 | 101 | }
|
116 | 102 | }
|
117 | 103 |
|
118 |
| - static class 狗 { |
119 |
| - public void 新陈代谢() { |
120 |
| - System.out.println("新陈代谢"); |
121 |
| - } |
122 |
| - |
| 104 | + static class 狗 extends 活的动物 implements 会叫的东西{ |
123 | 105 | public void 叫() {
|
124 | 106 | System.out.println("汪汪汪");
|
125 | 107 | }
|
|
0 commit comments