2016-02-14 7 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 [] является типа Vehicle и, следовательно, я не могу добавить объект Truck в массив, не так ли?

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

Эти двое в порядке, потому что они одного типа (Транспортное средство);

_vehicles[0] = _firstTruck; 

- это линия, в которой это неправильно. Таким образом, я сделаю _vehicles [0] типа Truck.

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

, а затем просто добавить

_vehicles[0] = _firstTruck; 

Является ли мое предположение хорошо?

Кроме того, в примечаниях учителя, я вижу, что я должен сделать это:

_vehicles[0] = new Object(); 

Может кто-нибудь объяснить это?

+1

Является ли грузовик подклассом транспортного средства, или нет? Это ключевая информация. – paisanco

ответ

0

Массив может быть только одного типа. Если грузовик не является подклассом транспортного средства, вы не сможете добавить все эти объекты в один и тот же массив. Однако, если автомобиль класса «расширяет» автомобиль, вы должны иметь возможность добавлять все эти объекты, если массив имеет тип транспортного средства.

+0

Да, вы правы, я создал класс Vehicle и расширенный класс Truck и работает. –