- オブジェクト指向なんて今すぐやめてください
346 :デフォルトの名無しさん[sage]:2014/04/30(水) 08:23:24.62 ID:mWnK1xiU - 長方形と正方形だけを考えるなら正方形の継承クラスとして長方形を定義すれば良いと思うんだが。
|
- オブジェクト指向なんて今すぐやめてください
349 :デフォルトの名無しさん[sage]:2014/04/30(水) 13:33:39.55 ID:mWnK1xiU - >>348
数学的な定義にとらわれすぎだと思う 集合的に見れば、長方形は正方形を完全に含んでるんだから 正方形を基底クラスに選んだ方が無駄も破綻もない。 長方形を継承して正方形を作ろうとするのは、派生クラスで共通では無い要素を持つ基底クラスを定義している事になる。 ふつうに実務的なコードを書くときにはみんなそんな事しないのに、長方形と正方形と言うすごく単純な話になると、変なこと考える子が増える。
|
- オブジェクト指向なんて今すぐやめてください
354 :デフォルトの名無しさん[sage]:2014/04/30(水) 22:37:59.96 ID:mWnK1xiU - >>353
どうなるもこうなるも長方形にダウンキャストしない限り長方形特有の機能に触れないだけでしょ。 多態にしたいなら目的に応じたインターフェース切ればよろし。
|
- オブジェクト指向なんて今すぐやめてください
356 :デフォルトの名無しさん[sage]:2014/04/30(水) 23:24:43.69 ID:mWnK1xiU - >>355
処理ってどんな処理だ、、、 正方形クラスのインターフェースは触れるし、オーバーライドしてるなら長方形クラス側の実装が走るでしょ。 ていうか、アップキャストしたままで操作するってのは多態なんだから、目的の示されていないこの問題で考えるだけ無駄だよ。 まじめに使用目的を類推したら正方形と長方形で別のクラス定義しなくなるし。
|