【发布时间】:2014-08-22 19:54:11
【问题描述】:
这是我的基类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 语句给我带来了问题,因为此类无法访问 Vehicle 中的 private 实例变量。我知道如果Vehicle 中的实例变量具有包/受保护的访问权限,这不会是问题,但要么我的导师犯了错误,要么我们应该想出一个解决方法。
有没有办法解决我错过的问题?
【问题讨论】:
标签: java inheritance polymorphism overriding