teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

蛇足

2020/08/19 06:28

投稿

momon-ga
momon-ga

スコア4828

answer CHANGED
@@ -43,4 +43,31 @@
43
43
  hozon.test();
44
44
  }
45
45
  }
46
+ ```
47
+
48
+ ---
49
+ Sampleクラスが、あまり役に立っていなくて(教本の後の方で意味がわかるかもしれませんが)
50
+
51
+ 単純にA,B,Cだけ使うなら
52
+ ```java
53
+ A[] sample = {new A(), new B(), new C()};
54
+
55
+ int i = 0;
56
+ sample[i++].test(); // A
57
+ sample[i++].test(); // B
58
+ sample[i++].test(); // C
59
+ ```
60
+ で、十分かなぁ。
61
+ ポイントは、Aという型で継承しているBもCも同じ配列で扱えるということ
62
+ メソッド名は同じなので、まったく同じコードで挙動の異なる振る舞いが実現できる。
63
+ ※上記では3回呼び出してますがforループで書けます
64
+
65
+ ---
66
+ > こんなインスタンスの生成の仕方あるの?と混乱しています。
67
+
68
+ インスタンスを後で使わないなら以下ように書くこともあります。
69
+ ```java
70
+ new Sample(new A()).method(); // A
71
+ new Sample(new B()).method(); // B
72
+ new Sample(new C()).method(); // C
46
73
  ```