2012-10-27 45 views
1

如果我在類中創建DefaultItems陣列:如何將multipule類對象存儲在Java中的相同數組中?

DefaultItems[] items = new DefaultItems[20]; 

我想以此爲5個不同的類對象的存儲陣列。我想存儲一個Car對象,Person對象和Pet對象。

DefaultItems[1] = Car Object; 
DefaultItems[2] = Person Object; 

這可能嗎?

+0

它們是DefaultItms的子類嗎? –

+2

聽起來像一個可怕的設計。爲什麼要將Car,Person和Pet對象封裝到數組中?這是一個面向對象設計的流產。 – duffymo

回答

1

如果CarPersonDefaultItems派生那麼你的代碼應該工作(假定錯字是固定的)。

如果這些類沒有任何關聯,那麼您可以使用Object[]而不是DefaultItems[]來實現您想要的。所有類都來自Object

0

確保您所有的5個物品,即Car,Person從基類DefaultItems延伸。一旦你這樣做,你可以達到你想要的。

public class Person extends DefaultItems { 
    //... 
} 

public class Car extends DefaultItems { 
    //... 
} 

然後

DefaultItems[] items = new DefaultItems[2]; 
DefaultItems[0] = new Person(); 
DefaultItems[1] = new Car(); 

一個實例與Number類及其亞類作爲是如下:

Number[] nums = new Number[3]; 
    nums[0] = new Integer(0); 
    nums[1] = new Double(1.0); 
    nums[2] = new Float(0.5); 

    for(Number num: nums){ 
     System.out.println(num);//<--prints the numbers 
    } 
0

這是可能的,在一種類型的安全的方式,就好像你想要存儲在數組中的所有對象都共享它們繼承的公共父類:

class Car extends MyObject { 
    ... 
} 

class Person extends MyObject { 
    ... 
} 

MyObject[] array = new MyObject[2]; 
array[0] = new Car(); 
array[1] = new Person(); 

但之後讓他們加入到他們可以爲MyObject的實例訪問數組(除非你強制轉換他們,必須避免),所以如果MyObject來類未提供通用的接口,那麼這是毫無意義。這是更好地使用組成:

class MyClass { 
    Person person; 
    Car car; 
    .. 
} 
相關問題