我确信以前有人问过这个问题,但我找不到我的问题的明确答案。假设我们有以下两个类:
public abstract class Vehicle {
private int gasTank;
private int milesDriven;
void Vehicle(int gas, int milesDriven) {
gasTank = gas;
this.milesDriven = milesDriven;
}
void move(int miles) {
gasTank -= subclass.getMileage() * miles; // I know this doesn't work but bear with me
milesDriven += miles;
}
}
public class HyundaiSonata extends Vehicle {
private int mileage;
void HyundaiSonata () { super(40, 5000); }
int getMileage() {return mileage;}
}
本质上,我的问题在第 11 行。没有办法访问子类方法或字段,因为继承只能向上流动,否则我将如何构建它?
编辑:请注意,该解决方案应该适用于一般情况,即我有数百种不同的车辆扩展了车辆类别
最佳答案
添加
protected abstract int getMileage();
在父类(super class)和子类中都需要重写它
关于java - 私有(private)变量的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51007224/