繁体   English   中英

无法从超级类中“访问”变量

[英]Can't “access” variable from super,super class

您好,我在覆盖存款方法时遇到问题。 我有一个BankAccount类(主要类),InterestAccount(扩展BankAccount)和IsaAccount(扩展InterestAccount)。 我无法调用余额来添加IsaAccount类的deposit方法中提到的金额。 我尝试了多种使用getBalance,super(balance),super.getBalance等的方法。没有任何效果。 这让我筋疲力尽...我浏览了许多类似的主题,但是找不到解决此特定问题的方法。 我必须制定一种存款方法,以便可以将钱存入IsaAccount对象。

public class BankAccount {

     private int balance;

     public BankAccount() {
            balance = 0;
        }

    ......................


    public class InterestAccount extends BankAccount {

        private int interestRate;  
        private int minimumBalance; 


        public InterestAccount() {
            super();    
            interestRate = 0;
            minimumBalance = 100;
        }

    ......................

    public class IsaAccount extends InterestAccount {

        private int depositRemaining;

        public IsaAccount() {
            super();
            depositRemaining = 0;
        }

        public IsaAccount(int balance, int interestRate, int minimumBalance, int depositRemaining) {
            super(balance, interestRate, minimumBalance);
            this.depositRemaining = depositRemaining;

        }

        @Override
            public void deposit(int amount) {
            if (amount <= depositRemaining)
                 <HERE I NEED TO CALL BALANCE(not sure whether I have to use get 
                 methods or what) e.g balance = balance + amount; >
        }

    ......................

更新BankAccount以进行设置并获得类似

class BankAccount {

    private int balance;

    public BankAccount() {
        balance = 0;
    }

    public int getBalance() {
        return this.balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }
}

然后使用此方法(自然,因为您已经使用@Override所以我假设它也确实存在于父类中,然后删除@Override

     @Override
     public void deposit(int amount) {
        if (amount <= depositRemaining){
            setBalance(getBalance() + amount);
            }

}

问题在于您尝试从BankAccount访问的余额变量是私有的。 当一个类扩展另一个类时,它将接收私有方法和变量,但无法访问它们。 您可以通过将余额更改为受保护而不是私有来解决此问题。 或者,您可以在BankAccount中设置一个公共方法来设置余额。

  1. protected int balance; 而不是private int balance;

要么

  1. public void setBalance(int balance){ this.balance = balance; } public int getBalance(){ return balance; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM