0

3 番目のクラスを拡張する 2 つのクラスがあります。

public class class_a extends parent_class

public class class_b extends parent_class

私の質問は、条件に基づいてクラスへの参照を作成するための 3 番目のクラスを持つことは可能ですか? すなわち

public void test() {
  parent_class b;
  if (cond)
    b = new class_a();
  else
    b = new class_b();
}

それを行う方法はありますか?

クラスのタイプごとに変数を作成したくありません。この関数の有効期間中、変数を 1 つだけ使用します。

4

2 に答える 2

3

それが、まさにファクトリー デザイン パターンの目的です。

http://en.wikipedia.org/wiki/Factory_method_pattern

これはFactory Patternにも役立つかもしれません。ファクトリ メソッドを使用する場合

于 2013-07-04T10:57:36.033 に答える
0

はい。 ポリモーフィズムにより、サブクラスを基本クラスとして脅威にさらすことができます。したがって、次のように、parent_class の戻り値の型を使用してメソッドを記述できます。

parent_class create(boolean condition)
{
   return condition ? new class_a() : new class_b();      
}

@ジョンが答えたように、それはファクトリーメソッドと呼ばれています。

PS Java では、ClassA や ParentClass のように、 CamelCaseを使用してクラスに名前を付ける必要があります。コード スタイル。

于 2013-07-04T11:05:42.193 に答える