У меня есть суперкласс Vehicle
и три класса, которые расширяют его: Bus
, Car
и Truck
.Я хочу иметь связанный список, который будет содержать автомобили разных типов, я использую
list = new LinkedList<Vehicle>()
, и, кажется, он работает, когда я использую System.out.println(list.get(2))
, но я не понимаю, почему?В качестве эксперимента я добавил в качестве эксперимента toString()
функцию к классу Vehicle
, который по-прежнему использует расширенный класс toString()
.Когда он будет использовать функцию отца, а когда сыновья?
Все разные классы имеют одинаковые функции, но разные частные переменные.
классы:
public class Vehicle {
protected String maker;
protected int year;
private int fuel; //0 1 2 3 4
public Vehicle (String maker, int year) {
this.maker = maker;
this.year = year;
this.fuel = 0;
}
public void drive () {...}
public void fill () {...}
}
Автобус:
public class Bus extends Vehicle{
private int sits;
public Bus (String maker, int year, int sits) {
super (maker, year);
this.sits = sits;
}
public String toString () {...}
}
Грузовик:
public class Truck extends Vehicle{
private int weight;
public Truck (String maker, int year, int weight) {
super (maker, year);
this.weight = weight;
}
public String toString () {...}
}
Автомобиль:
public class Car extends Vehicle{
private float volume;
public Car (String maker, int year, float volume) {
super (maker, year);
this.volume = volume;
}
public String toString () {...}
}