这是我的基类Vehicle
,带有private
个实例变量。
public class Vehicle {
private int numPassengers;
private String colour;
Vehicle(int passengers, String colour) {
this.numPassengers = passengers;
this.colour = colour;
}
public String toString() {
return colour + " " + numPassengers + " passengers";
}
}
请注意,此课程中没有访问者方法,我无法以任何方式编辑此课程。
我有一个派生类Car
,其中包含一个额外的实例变量numberOfDoors
public class Car extends Vehicle
{
private int numberOfDoors;
public Car(String newColour, int newNumberOfPassengers, int newNumberOfDoors)
{
super(newNumberOfPassengers, newColour);
this.numberOfDoors = newNumberOfDoors;
}
@Override
public String toString()
{
return colour + " " + numPassengers + " passengers " + numberOfDoors + " doors";
}
}
我可以根据需要编辑这个类,并且我知道不同的构造方法签名。
显然,toString()
中的return语句给了我一些问题,因为这个类无法访问private
中的Vehicle
实例变量。我知道如果Vehicle
中的实例变量具有包/受保护的访问权限,这不会是一个问题,但是我的教师犯了一个错误,或者我们应该想出一个解决方法。
我有什么方法可以解决这个问题吗?
答案 0 :(得分:3)
子类无法访问超类的私有成员,除非你有这些超类。
你能做什么:
@Override
public String toString()
{
return super.toString() + " " + numberOfDoors + " doors";
}