如果我在 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
。一旦你这样做了,你就可以实现你想要的。
IE
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
}
以类型安全的方式,只要您要存储在数组中的所有对象共享一个它们继承的公共父类,这是可能的:
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;
..
}