Как позволить подклассу наследовать переменную без значения в Java? - PullRequest
0 голосов
/ 10 марта 2019

У меня есть абстрактный класс BankAccount, у которого есть два подкласса - SavingsAccount и CreditAccount. Оба подкласса совместно используют набор переменных, которые будут иметь разные значения, например, 1% процентная ставка для SavingsAccount и 0,5% для CreditAccount. Поскольку они также используют несколько методов, использующих переменную интереса, я бы хотел, чтобы они наследовали переменную и методы, использующие ее (вместо того, чтобы писать эти методы дважды).

Могу ли я как-то сделать, чтобы подклассы наследовали переменную интереса и присвоили ему желаемое значение в подклассах, или есть другой способ решить эту проблему?

1 Ответ

1 голос
/ 10 марта 2019

Два способа сделать это (по крайней мере);

  1. Дайте вашему базовому классу конструктор (не волнуйтесь, он все равно будет абстрактным), который инициализирует переменную экземпляра,и предоставить защищенные методы доступа для переменных.

  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...
}
...