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

回答編集履歴

2

追記

2017/03/13 23:29

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -6,4 +6,8 @@
6
6
  隠蔽が必要な場面としては、例えば Equals がありますが、説明は書ききれないので省略します。
7
7
 
8
8
 
9
- なぜ両者ともに書ききれないかと言うと、説明の前提として必要な知識が不足していると思われるからです。こんなところでチョコチョコっと聞いて理解したつもりになるのではなく、もっと基礎の部分を学習してください。
9
+ なぜ両者ともに書ききれないかと言うと、説明の前提として必要な知識が不足していると思われるからです。こんなところでチョコチョコっと聞いて理解したつもりになるのではなく、もっと基礎の部分を学習してください。
10
+
11
+ 追記
12
+
13
+ Equals も通常オーバーライドするので例として不適切でした。複数のインターフェースを実装し、それらに同じシグネチャーのメソッドが含まれている際にメンバーの隠蔽が使われることがあります。例えばジェネリックインターフェースの場合に起こりえます。

1

修正

2017/03/13 23:29

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -2,8 +2,8 @@
2
2
  Component クラスを継承しているからです。
3
3
 
4
4
  2 new 演算子による基底メンバーの隠蔽のことだろうと思いますが、滅多に出番はありません。通常は隠蔽ではなくオーバーライドを使います。
5
- オーバーライドできないメンバーを隠蔽によって無理やり上書きさせなければならない事態に出会ったら、設計が悪いのでやり直してください。基底クラスにキャストした時挙動がおかしくなり、発見しにくいバグになります。
5
+ オーバーライドできないメンバーを隠蔽によって無理やり上書きさせなければならない事態に出会ったら、設計が悪いのでやり直してください。基底クラスにキャストした時とそうでない時で挙動が変わり、発見しにくいバグになります。
6
6
  隠蔽が必要な場面としては、例えば Equals がありますが、説明は書ききれないので省略します。
7
7
 
8
8
 
9
- なぜ両者ともに書ききれないかと言うと、説明の前提として必要な知識が不足していると思われるからです。こんなところでチョコチョコっと聞いて理解したつもりになるのではなく、もっとしっかり学習してください。
9
+ なぜ両者ともに書ききれないかと言うと、説明の前提として必要な知識が不足していると思われるからです。こんなところでチョコチョコっと聞いて理解したつもりになるのではなく、もっと基礎の部分を学習してください。