DefaultItemsクラスに配列を作成すると、次のようになります。
DefaultItems[] items = new DefaultItems[20];
これを5つの異なるクラスオブジェクトのストレージ配列として使用したいと思います。Carオブジェクト、Personオブジェクト、Petオブジェクトを保存したい。
DefaultItems[1] = Car Object;
DefaultItems[2] = Person Object;
これは可能ですか?
DefaultItemsクラスに配列を作成すると、次のようになります。
DefaultItems[] items = new DefaultItems[20];
これを5つの異なるクラスオブジェクトのストレージ配列として使用したいと思います。Carオブジェクト、Personオブジェクト、Petオブジェクトを保存したい。
DefaultItems[1] = Car Object;
DefaultItems[2] = Person Object;
これは可能ですか?
Car
からPerson
派生した場合DefaultItems
、コードは機能するはずです(タイプミスが修正されていると仮定します)。
Object[]
クラスがまったく関連していない場合は、の代わりにを使用して、目的を達成できますDefaultItems[]
。すべてのクラスはから派生しObject
ます。
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
次のようなクラスとそのサブクラスの1つの例:
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
}
配列に格納するすべてのオブジェクトが、それらが継承する共通の親クラスを共有している場合でも、タイプセーフな方法で可能です。
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;
..
}