java - 私有(private)变量的继承

标签 java oop inheritance

我确信以前有人问过这个问题,但我找不到我的问题的明确答案。假设我们有以下两个类:

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/

相关文章:

java - class className 一定要写在className.java 中吗?

java - Spring MVC - 表单提交而不绑定(bind)对象

java - dbunit 测试用例抛出 NoSuchTableException

java - 为什么在泛型类(Java)的构造函数中提供类型参数是错误的?

java - 抽象类和构造函数问题以及这个 UML 图

entity-framework - EF6 中是否修复了 TPT 继承的性能问题?

java - 如何检查一个数字是否包含超过1个相同的数字? ( java )

oop - 如何公开全局类方法的返回类型?

php - 在闭包函数参数PHP中添加类-引发未捕获的TypeError

java - 处理继承时重写 equals 方法