java - Java中如何让子类继承一个没有值的变量?

标签 java abstract-class

我有一个 BankAccount 抽象类,它有两个子类 - SavingsAccount 和 CreditAccount。两个子类共享一组具有不同值的变量,例如SavingsAccount 的利率为 1%,CreditAccount 的利率为 0.5%。由于他们还共享几个使用interestRate变量的方法,我希望他们继承该变量和使用它的方法(而不是两次编写这些方法)。

我可以以某种方式让子类继承interestRate变量并在子类中给它我想要的值,还是有其他方法来解决这个问题?

最佳答案

有两种方法可以做到这一点(至少);

  1. 为您的基类提供一个构造函数(不用担心,它仍然是抽象的)来初始化实例变量,并为变量提供 protected 访问器。

  2. 保护实例变量。

示例:

abstract class BankAccount {
    private BigDecimal interestRate;

    protected BankAccount(BigDecimal interestRate) {
        this.interestRate = interestRate;
    }

    protected BigDecimal getInterestRate() {
        return this.interestRate;
    }
}

class SavingsAccount extends BankAccount {
    public SavingsAccount(BigDecimal interestRate) {
        super(interestRate);
    }
    // ...code in methods can use `this.getInterestRate()`...
}

或者(但我推荐):

abstract class BankAccount {
    protected BigDecimal interestRate;

    protected BankAccount(BigDecimal interestRate) {
        this.interestRate = interestRate;
    }
}

class SavingsAccount extends BankAccount {
    public SavingsAccount(BigDecimal interestRate) {
        super(interestRate);
    }
    // ...code in methods can use `this.interestRate` directly...
}

关于java - Java中如何让子类继承一个没有值的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55086548/

相关文章:

java - HttpServletResponse#sendError() 会抛出 IOException 吗?

flutter - 抽象类的 super 构造函数中的 undefined_named_pa​​rameter

java - 修改过滤器链 - 或者选择servlet使用过滤器响应请求

java - 如何在测试中以不同的方式模拟具有相同参数的静态方法?

java - 是否可以为同一个命令执行两个处理程序? ( eclipse RCP)

java - 类型Class的层级不一致

c++ - 将实现注入(inject)到 C++ 中的类中

c# - 使用 WinForms 连续绘制椭圆同时保留矩形

C++ 无法访问抽象类 vector 的元素?

java - Activity 运行问题。安卓