2016-02-14 45 views
-1

我有几个关于这个代码的问题:在数组中添加不同类型的对象

公共类MainClass {

public static void main(String _args[]) { 
    // this is a reference variable of type Truck, referring 
    // an object of type Truck 
    Truck _firstTruck = new Truck("Volvo", "Generic", "blue", 8000, 20); 

    // this is a reference variable of type Vehicle, referring 
    // an object of type Vehicle 
    Vehicle _firstVehicle = new Vehicle("Bicycle", "red"); 

    // since a Truck is also a Vehicle, we can have 
    // a reference variable of type Vehicle, referring 
    // an object of type Truck 
    Vehicle _secondVehicle = new Truck("Scania", "unknown", "green", 7000, 30); 

    //better yet, we can do this: 
    Vehicle _vehicles[] = new Vehicle[3]; 
    _vehicles[0] = _firstTruck; // a truck is a vehicle 
    _vehicles[1] = _firstVehicle; 
    _vehicles[2] = _secondVehicle; 

    for (int i = 0; i < _vehicles.length; i++) { 
     _vehicles[i].increaseSpeedBy(); 
    } 

} 

}

据我所知,阵列_vehicles []是类型的车辆,因此我无法将卡车对象添加到数组中,对吗?

_vehicles[1] = _firstVehicle; 
_vehicles[2] = _secondVehicle; 

这两个都可以,因为它们属于同一类型(Vehicle);

_vehicles[0] = _firstTruck; 

是它错的那一行。 所以我会制作卡车的_vehicles [0]。

Truck _vehicles[0]=new Truck("","","",0,0); 

,然后只需添加

_vehicles[0] = _firstTruck; 

是我的假设好?

而且,在老师的笔记我看到,我应该这样做:

_vehicles[0] = new Object(); 

有人能解释一下吗?

+1

卡车是车辆的一个子类,还是不是?这是关键信息。 – paisanco

回答

0

一个数组只能是一种类型。如果卡车不是车辆的子类,则无法将所有这些对象添加到同一个阵列。但是,如果班级卡车“延伸”车辆,则应该能够添加所有这些提供阵列类型车辆的物件。

+0

是的,你是对的,我创造了班车和扩展班卡车和工作。 –

相关问题