1

基本クラスとそれを拡張するいくつかのクラスが必要です。

次に、2 つの拡張クラスのいずれかになる配列が必要です。

私はこのようなことをしたいと思っていました:

class Base{  }
class A extends Base {}
class B extends Base {}

次に、AまたはBのいずれかになる配列が必要なので、配列宣言でBaseを使用します

Base[] it = Base[2];

it[0] = new A();
it[1] = new B();

これを正しく行っているのか、許可されているのかはわかりません。

ありがとう

4

2 に答える 2

6

newキーワードがありません:

Base[] it = new Base[2];

それ以外は、アプローチは問題ありません。type の配列は、 typeおよびBase[]のオブジェクトを保持できます。これは、それら自体が type を拡張しているためです。ABBase

例:

static public class Base { 
    public void foo() { 
        System.out.println("I am base");
    }
}
static public class A extends Base { 
    @Override
    public void foo() { 
        System.out.println("I am A");
    }
}
static public class B extends Base { 
    @Override
    public void foo() { 
        System.out.println("I am B");
    }
}

    public static void main(String[] args) {
        Base[] arr = new Base[2];
        arr[0] = new A();
        arr[1] = new B();
        arr[0].foo();
        arr[1].foo();
    }

印刷で期待されるように、結果は次のようになります。

I am A
I am B
于 2012-09-07T11:51:43.180 に答える
0

ここで行う最善の方法は、試してみることです =) 質問に関しては、はい、うまくいくはずです。

于 2012-09-07T11:52:51.850 に答える