Java入門・初心者質問スレ Part.11

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa07-jGB0)
垢版 |
2021/06/29(火) 11:42:34.74ID:iGYT4fi4a
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.10
https://mevius.5ch.net/test/read.cgi/tech/1585721355/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/03/05(土) 22:07:38.34ID:ucLsxDYZ0
>>594
うーん、別に頭の良し悪しじゃなくて、単にイメージがしづらいだけじゃないかな

概念的なこと聞くより手を動かした方がいいかも
俺もいろんなとこで聞いたけど理解できずに、デザインパターンをやったりいろいろ工夫して手を動かしたらすんなり理解できるようになったし

まずデザインパターンのFactoryパターン辺りをやってみて?

Parent obj = new Child();
という生成をFactoryパターンでやると、
Parent obj = Factory.Create();
のような感じになるはず

そしたらこのobjを動かす方は内部でChildでnewしているかどうかは見えないよね?
単にParent型である保証しかされてない
でも言い換えると「Parentにあるメソッドはと持ってる」だよね?
実際の処理はオブジェクトであるobjが知ってるからobjに紐付いているメソッドを動かす

オーバーライドしてる場合は直近の「自身で再定義した方」
と解釈され、オーバーライドされてない場合は直近の「親の方」と解釈される
だって「自身で再定義した方」はないからね

そしてobjを動かす方からすれば(Childでnewしていようと)Childかなんてわかんない
だからChild独自のメソッドは使えない

もちろん、C#だとasとかでキャストしたりすれば(Childで生成しているなら)Child独自のメソッドも使えるけどね

FactoryMethodパターンはFactoryパターンの拡張版だからFactoryパターンを理解してみて)
2022/03/05(土) 22:11:54.81ID:ucLsxDYZ0
>>595だけど、すまん
C#じゃなくてJavaだったね

asみたいなキャスト をダウンキャストして とかみたいに読み替えてね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況