Java 方法检索和继承混淆

Java 方法检索和继承混淆,java,class,inheritance,methods,private-methods,Java,Class,Inheritance,Methods,Private Methods,好的,所以我遇到了很多麻烦,我还在学习Java,我的书给我设定了一个任务,我发现这在网络上很常见,我被困的部分是 我必须创建一个银行账户计划,向账户持有人提供一个储蓄账户(有利率且无透支贷款)和一个支票账户(有100英镑的超额贷款且无利息) 我还没有实施透支,而且离提款和存款功能只差一半,但我的问题是利息,我在我的超类中定义了储蓄账户余额和支票账户余额,因此在计算储蓄账户类中的利息时,我不能引用储蓄余额,因为我已将其设置为私有。我试图使用set.name方法,但显然我做得不对 一个大大的微笑,感

好的,所以我遇到了很多麻烦,我还在学习Java,我的书给我设定了一个任务,我发现这在网络上很常见,我被困的部分是

我必须创建一个银行账户计划,向账户持有人提供一个储蓄账户(有利率且无透支贷款)和一个支票账户(有100英镑的超额贷款且无利息)

我还没有实施透支,而且离提款和存款功能只差一半,但我的问题是利息,我在我的超类中定义了储蓄账户余额和支票账户余额,因此在计算储蓄账户类中的利息时,我不能引用储蓄余额,因为我已将其设置为私有。我试图使用set.name方法,但显然我做得不对

一个大大的微笑,感谢任何一个能帮助或提供建议的人

超类如下所示:

public class BankDetails
    {
        private String customer;
        private String accountno;
        private double savebalance;
        private double checkbalance;


//Constructor Methods

 public BankDetails(String customerIn, String accountnoIn, double savebalanceIn, double checkbalanceIn)
        {
            customer = customerIn;
            accountno = accountnoIn;
            savebalance = savebalanceIn;
            checkbalance = checkbalanceIn;
        }

      // Get  name
      public String getcustomername()
        {
            return (customer);
        }

      // Get account number
      public String getaccountnumber()
        {
            return (accountno);
        }

       public double getcheckbalanceamount()
        {
            return (checkbalance);
        }

       public double getsavebalanceamount()
        {
            return (savebalance);
        }


public void savewithdraw(double savewithdrawAmountIn)

  {
        savebalance = savebalance - savewithdrawAmountIn;

  }

public void checkwithdraw(double checkwithdrawAmountIn)

  {
        checkbalance = checkbalance - checkwithdrawAmountIn;

  }


 public void savedeposit(double savedepositAmountIn)

  {
        savebalance = savebalance - savedepositAmountIn;

  }

public void checkdeposit(double checkdepositAmountIn)

  {
        checkbalance = checkbalance - checkdepositAmountIn;

  }




    } // End Class BankDetails
子类如下所示:

    import java.util.*; 

public class Savings extends BankDetails
  {

      private String saveaccount;
      private double interest;


      public Savings(String customerIn, String accountnoIn, float interestIn, 
      String saveaccountIn, double savebalanceIn)
        {


            super (customerIn, accountnoIn, savebalanceIn, interestIn);


            saveaccount = saveaccountIn;
            interest = interestIn;

        }


      public String getsaveaccountno()
       {
           return (saveaccount);
       }

      public double getinterestamount()
       {
           return (interest);
       }


      public void interestamount(String[] args)

       {
           BankDetails.getsavebalanceamount(savebalance);
           interest = (savebalance / 100) * 1.75;


       }


       }

使用超类的
getSaveBalance()
方法访问余额(该余额的名称可疑,因为您有一个储蓄帐户类,但将余额保留在其他地方)

(目前它是
getsavebalanceamount()
,我假设重命名以符合Java约定。)


我建议在命名getter和setter时使用一致的CamelCase,例如,
getInterestAmount()
getSaveAccountNo()
,等等

我建议不要评论简单的getter/setter,但如果您这样做,请使用Javadoc约定,例如:

/** Returns current savings account balance. */
public double getSaveBalance() { ... etc ... }
我还建议避免使用不必要的括号,如当前的getter中的括号,例如:

public double getSaveBalance() {
    return saveBalance; // No parens required.
}

使用超类的
getSaveBalance()
方法访问余额(该余额的名称可疑,因为您有一个储蓄帐户类,但将余额保留在其他地方)

(目前它是
getsavebalanceamount()
,我假设重命名以符合Java约定。)


我建议在命名getter和setter时使用一致的CamelCase,例如,
getInterestAmount()
getSaveAccountNo()
,等等

我建议不要评论简单的getter/setter,但如果您这样做,请使用Javadoc约定,例如:

/** Returns current savings account balance. */
public double getSaveBalance() { ... etc ... }
我还建议避免使用不必要的括号,如当前的getter中的括号,例如:

public double getSaveBalance() {
    return saveBalance; // No parens required.
}

我建议你这样做

interface Account{
  int getAccountNumber();
  float getBalance();
}

public class SavingAccount implements Account, Interest{
  int accountNumber;
  public int getAccountNumber(){
    return accountNumber;
  }
  float balance;
  public float getBalance(){
    return balance;
  }
  float savingInterestRate;
  public float getInterestRate(){
     return savingInterestRate;
  }
}

public class CheckingAccount implements Account, OverDraft{
  int accountNumber;
  public int getAccountNumber(){
  return accountNumber;
  }
  float balance;
  public float getBalance(){
    return balance;
  }
}

interface Interest{
  float getInterestRate();
}

interface OverDraft{
....
}

我建议你这样做

interface Account{
  int getAccountNumber();
  float getBalance();
}

public class SavingAccount implements Account, Interest{
  int accountNumber;
  public int getAccountNumber(){
    return accountNumber;
  }
  float balance;
  public float getBalance(){
    return balance;
  }
  float savingInterestRate;
  public float getInterestRate(){
     return savingInterestRate;
  }
}

public class CheckingAccount implements Account, OverDraft{
  int accountNumber;
  public int getAccountNumber(){
  return accountNumber;
  }
  float balance;
  public float getBalance(){
    return balance;
  }
}

interface Interest{
  float getInterestRate();
}

interface OverDraft{
....
}

好的,谢谢你,名字可疑??这是我不确定是否也要做的事情,你认为我应该把savebalance和checkbalance放在适当的子类中,把draw和deposit方法放在它们的子类中吗?我觉得最好放在supercalses中,因为它们是两个子类都会发生的计算。(我仍然在学习java,同时也在使事情变得合乎逻辑lol)对不起,我仍然不确定我是否理解,我以为我在子类中使用的是来自我的超类的getSaveBalance()方法?public void interestamount(String[]args){BankDetails.getsavebalanceamount(savebalance);interest=(savebalance/100)*1.75;}@Phil
savebalance
getSaveBalance()不同。一个是在超类中声明的
private
变量,一个是声明的
public
@Phil
BankDetails
与帐户不同的方法;一个人的银行详细信息可以包括任意数量的账户、账户类型等。举个简单的例子,这可能并不重要——但了解何时、何地以及如何创建类、独立关注点等是最重要的事情之一。好的,所以我不想在利息方法save balance中引用,我想引用getter方法getsavebalanceamount(),它将向我返回savebalance的值?好的,谢谢,名字可疑??这是我不确定是否也要做的事情,你认为我应该把savebalance和checkbalance放在适当的子类中,把draw和deposit方法放在它们的子类中吗?我觉得最好放在supercalses中,因为它们是两个子类都会发生的计算。(我仍然在学习java,同时也在使事情变得合乎逻辑lol)对不起,我仍然不确定我是否理解,我以为我在子类中使用的是来自我的超类的getSaveBalance()方法?public void interestamount(String[]args){BankDetails.getsavebalanceamount(savebalance);interest=(savebalance/100)*1.75;}@Phil
savebalance
getSaveBalance()不同。一个是在超类中声明的
private
变量,一个是声明的
public
@Phil
BankDetails
与帐户不同的方法;一个人的银行详细信息可以包括任意数量的账户、账户类型等。举个简单的例子,这可能并不重要——但了解何时、何地以及如何创建类、独立关注点等是最重要的事情之一。好的,所以我不想在利息方法save balance中引用,我想引用getter方法getsavebalanceamount(),它将返回savebalance的值?