ハマっている「お菓子」を教えて!

Super obj = new Sub();どういう目的、メリットで暗黙型変換を行うのですか

Superはスパークラス。 SubはSuperクラスのはサブクラスです。
できれば新人でもわかるレベルでご回答願います

A 回答 (4件)

依存性を極力排除するため。


処理が末端のクラス名で書いてあれば
それはそのクラス専用の処理になってしまいます。
上位クラスを使って書いてあれば、それは
新しいサブクラスに対しても使える可能性が高いし
そういうふうに処理を書きます。

オブジェクト試行設計(OOD)ではクラス間の共通性
分析は設計のとても重要な工程です。
クラス間の共通性を見いだし、
複数のクラスの共通性を抽象クラスやインターフェースで表現し
処理の対象を極力抽象クラスやインターフェースにすることで
機能の追加(具象クラスの追加)に対する
処理の変更を減らすことが可能になるのです。

私は機能の「プラグイン化」等と勝手に呼んでます。

DI(依存性注入)やIoC(制御の反転)と組み合わせると、
依存性を減らし、仕様変更の影響を小さくするという
観点において、素晴らしい結果を得ることができます。
    • good
    • 0

サブクラス固有のプロパティ、メソッドは関係なく、スーパークラスに用意されているプロパティ、メソッドによって操作をしたい時に有効です。



スーパークラスを継承するサブクラスがいくつもあり、処理の流れ上、サブクラスがどんなものかを把握する必要がない時に利用されます。

Super obj;
if (true) {
 obj = new Sub1();
} else {
 obj = new Sub2();
}
obj.SuperClassMethod();

とか

Super factory() {
 if (true) {
  return new Sub1();
 } else {
  return new Sub2();
 }
}

Super obj;
obj = factory();
obj.SuperClassMethod();

みたいな。
    • good
    • 0

オブジェクト指向プログラミングで多態性を実現するのに使います。


「java oop 多態性とは メリット」とか検索すると、詳しい解説とか見つかります。
一例としては、GUIプログラムでのユーザインタフェース要素(ボタンやテキストフィールド)を一括して処理する場合とかを考えると、メリットが分かりやすいかと。

※基本的にこの手の質問は、ひたすらネット検索するか、書籍を読むほうが理解が深まります。質問サイトで質問するのがムダという。
    • good
    • 0

スーパークラスの変数を使う:


https://www.javadrive.jp/start/extends/index6.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!