2012-09-07 51 views
1

我想有一個基類和幾個類擴展它。基類擴展和數組

然後我想有一個數組可以是兩個擴展類中的任何一個。

我希望做這樣的事情:

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

那麼我想一個數組,可能是A或B,所以我使用基地的數組聲明

Base[] it = Base[2]; 

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

我不是當然,如果我正確地做這件事,或者這是否允許。

感謝

+2

那麼你試過嗎?發生了什麼? –

+0

這就是做這件事的方法。 (除非像amit指出的那樣,你在創建數組時缺少'new'。) –

回答

6

你缺少new關鍵字:

Base[] it = new Base[2]; 

其他然後, - 該方法就好了。類型爲Base[]的數組可以容納AB類型的對象,因爲它們本身擴展了Base類型。

例子:

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 
0

好了,在這裏做的最好的事情就是給它一個嘗試=)至於問題,是的,它應該工作。