Java 方法检索和继承混淆
好的,所以我遇到了很多麻烦,我还在学习Java,我的书给我设定了一个任务,我发现这在网络上很常见,我被困的部分是 我必须创建一个银行账户计划,向账户持有人提供一个储蓄账户(有利率且无透支贷款)和一个支票账户(有100英镑的超额贷款且无利息) 我还没有实施透支,而且离提款和存款功能只差一半,但我的问题是利息,我在我的超类中定义了储蓄账户余额和支票账户余额,因此在计算储蓄账户类中的利息时,我不能引用储蓄余额,因为我已将其设置为私有。我试图使用set.name方法,但显然我做得不对 一个大大的微笑,感谢任何一个能帮助或提供建议的人 超类如下所示:Java 方法检索和继承混淆,java,class,inheritance,methods,private-methods,Java,Class,Inheritance,Methods,Private Methods,好的,所以我遇到了很多麻烦,我还在学习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
@PhilBankDetails
与帐户不同的方法;一个人的银行详细信息可以包括任意数量的账户、账户类型等。举个简单的例子,这可能并不重要——但了解何时、何地以及如何创建类、独立关注点等是最重要的事情之一。好的,所以我不想在利息方法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;}@Philsavebalance
与getSaveBalance()不同。一个是在超类中声明的private
变量,一个是声明的public
@PhilBankDetails
与帐户不同的方法;一个人的银行详细信息可以包括任意数量的账户、账户类型等。举个简单的例子,这可能并不重要——但了解何时、何地以及如何创建类、独立关注点等是最重要的事情之一。好的,所以我不想在利息方法save balance中引用,我想引用getter方法getsavebalanceamount(),它将返回savebalance的值?