回答編集履歴

1

蛇足

2020/08/19 06:28

投稿

momon-ga
momon-ga

スコア4820

test CHANGED
@@ -89,3 +89,57 @@
89
89
  }
90
90
 
91
91
  ```
92
+
93
+
94
+
95
+ ---
96
+
97
+ Sampleクラスが、あまり役に立っていなくて(教本の後の方で意味がわかるかもしれませんが)
98
+
99
+
100
+
101
+ 単純にA,B,Cだけ使うなら
102
+
103
+ ```java
104
+
105
+ A[] sample = {new A(), new B(), new C()};
106
+
107
+
108
+
109
+ int i = 0;
110
+
111
+ sample[i++].test(); // A
112
+
113
+ sample[i++].test(); // B
114
+
115
+ sample[i++].test(); // C
116
+
117
+ ```
118
+
119
+ で、十分かなぁ。
120
+
121
+ ポイントは、Aという型で継承しているBもCも同じ配列で扱えるということ
122
+
123
+ メソッド名は同じなので、まったく同じコードで挙動の異なる振る舞いが実現できる。
124
+
125
+ ※上記では3回呼び出してますがforループで書けます
126
+
127
+
128
+
129
+ ---
130
+
131
+ > こんなインスタンスの生成の仕方あるの?と混乱しています。
132
+
133
+
134
+
135
+ インスタンスを後で使わないなら以下ように書くこともあります。
136
+
137
+ ```java
138
+
139
+ new Sample(new A()).method(); // A
140
+
141
+ new Sample(new B()).method(); // B
142
+
143
+ new Sample(new C()).method(); // C
144
+
145
+ ```