假设我有一个ParkingMeter类和一个ParkingSlip类。只能从ParkingMeter类内部创建ParkingSlips,但应通过名为ParkingSlips的外部类访问Car(以便您可以检查每辆车是否已支付 parking 费)。

有没有一种方法可以确保只能在ParkingMeter中创建ParkingSlips,而其他类仍然可以访问它?

最佳答案

如果您不想将ParkingSlip设为内部类,则将这两个类放在同一包中,并让ParkingSlip的构造函数package-private。它不会阻止同一程序包中的其他类创建 parking 凭条,但是会阻止其他程序包中的邪恶者。

package parking;

public class ParkingSlip {
    ParkingSlip() {
    }
}

public class ParkingMeter {
    public ParkingSlip getSlip() {
        return new ParkingSlip();
    }
}

10-01 18:59