2012-09-07 83 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

好了,在这里做的最好的事情就是给它一个尝试=)至于问题,是的,它应该工作。