具有2个子类构造函数的数组列表

时间:2019-05-12 10:38:14

标签: java arraylist subclass

我正在尝试使用Java创建一个简单的GUI。我有一个数组列表 执行如下:

private List<Vehicle> vehicles = new Arraylist<>();

我正在尝试传递具有比超类更多的参数的子类对象。

我尝试过强制转换并覆盖toString方法,但似乎没有任何作用

我的supeprclass:

public abstract class Vehicle {
    private int speed; 
    public Vehicle (int speed) {
        this.speed = speed;
    }
}

我的子类:

public class Car extends Vehicle {
    private int gear; 
    public Car (int speed, int gear) {
        super(speed);
        this.gear = gear;
    }
}

public class Bike extends Vehicle {
    public Bike (int speed) {
        super(speed);
    }
}

我在初始化Arraylist的类中实例化

Car car = new Car (100, 5);
vehicles.add(car);

我可以毫无问题地初始化Car。发送参数,但是即时获取的结果只是超类的一个实例。我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

java泛型的一个众所周知的方面是List<Car>不是List<Vehicle>的子类。这就是为什么存在诸如List<? extends Vehicle>List<? super Car>之类的构造的原因。有许多在线资源显示如何处理您的情况。例如Generics, Inheritance and Subtypes

相关问题