希望在传递给父构造函数之前初始化成员

Wish to initialize member before passing to parent constructor

这是我的难题的玩具示例:

public abstract class Car {
    public Car(Seat[] seatsParam) {    // Could be protected.
        driverSeat = new DriverSeat();
        seats = new ArrayList<Seat>();
        seats.add(driverSeat);
        seats.addAll(seatsParam);
    }
    private final List<Seat> seats;
    private final DriverSeat driverSeat;
}

public class MyCar extends Car {
    public MyCar() {
        super(new Seat[]{new PassengerSeat()});    // Cannot assign to member.
    }
    public PassengerSeat getPassengerSeat() {  // Would like this accessor.
        return passengerSeat;
    }
    private final PassengerSeat passengerSeat;
}

Car 有一个 Seat 列表(座位超类型),最好在构造函数中初始化。每辆车都有一个 DriverSeat。 MyCar 还有一个 PassengerSeat,我想从子类型访问它,但也想从父列表(作为座位)访问它。

我拍下的一些东西:

我想说这是我应该可以用OO表达的东西,定义一个变量传给parent引用。但是我想不出如何做得很好。自从我使用 C++ 以来已经有一段时间了,但这就是初始化列表解决的问题吗?如果是这样,Java 是否有等价物?

我见过有类似问题的人使用线程局部变量,天知道还有什么其他可怕的技巧,幸运的是有一个简单的解决方案:

public MyCar() {
    this(new PassengerSeat());   
}

private MyCar(PassengerSeat seat) {
    super(new PassengerSeat[]{seat});   
    // Well do something with your seat now.
}