我已经在寻找解决方案,但是我仍然不知道该怎么办.该程序应该模拟一个自动取款机,该自动取款机从支票中减去余额,并向存款中添加钱.
我有这个家长班:
public class Transaction
{
private int transNumber;
private int transId;
private double transAmt;
public Transaction(int number, int id, double amount)
{
transNumber = number;
transId = id;
transAmt = amount;
}
public int getTransNumber()
{
return transNumber;
}
public int getTransId()
{
return transId;
}
public double getTransAmount()
{
return transAmt;
}
}
我有一个数组列表(transList),用于存储每次提款/存款的Transaction对象.
子类是:
public class Check extends Transaction
{
private int checkNumber; // check number for each check transaction
public Check(int tId, double tAmt, int tCount, int checkNumber) {
super(tCount, tId, tAmt);
this.checkNumber = checkNumber;
}
public int getCheckNumber() {
return checkNumber;
}
public void setCheckNumber(int checkNumber) {
this.checkNumber = checkNumber;
}
}
如果用户需要,我需要在JOptionPane中打印出支票号.
我主要有:
checkNumStr = JOptionPane.showInputDialog("Enter check number:");
checkNum = Integer.parseInt(checkNumStr);
checkAmtStr = JOptionPane.showInputDialog("Eneter check amount:");
checkAmt = Double.parseDouble(checkAmtStr);
Check c = new Check(1, checkAmt, acctCheck.gettransCount(), checkNum);
acctCheck.addTrans(c);
我不确定我是否已经足够清楚.我以前没有在这里问过任何问题.我需要知道的是如何从父类Transaction的对象的数组列表中调用Check.getCheckNumber().
编辑:transList位于另一个类:Checking Account:
public class CheckingAccount extends Account
{
private double totalServiceCharge;
private static ArrayList transList;
// keeps a list of Transaction objects for the account
private int transCount = 0;
// the count of Transaction objects and used as the ID for each transaction
NumberFormat fmt = NumberFormat.getCurrencyInstance();
public CheckingAccount()
{
transList = new ArrayList();
totalServiceCharge = 0;
}
public double getServiceCharge()
{
return totalServiceCharge;
}
public void setServiceCharge(double currentServiceCharge)
{
totalServiceCharge += currentServiceCharge;
}
// adds a transaction object to the transList
public void addTrans(Transaction newTrans)
{
transList.add (newTrans);
transCount++;
}
//returns the current value of transCount;
public int gettransCount()
{
return transCount;
}
}
解决方法:
在建立课程时,您应该考虑has-a is-a关系.
您的例子
您有一个交易类.您有一个Check类扩展了Transaction.当您扩展时,您是说“支票是一项交易”,这是不正确的.但是交易是否有一张(或一张)支票?是!因此,在这种情况下,您可以将Check与Transaction的扩展分开,然后执行以下操作:
public class Transaction {
Check check; // This is an example of a has-a relationship
}
public class Check { // notice how Check doesn't extend Transaction
// anymore. As it shouldn't, because they don't
} // share any common properties
如果您想要一个ArrayList of Checks,我会将其放在Account类中,因为Account确实具有-a(ha)a checkHistory
public class Account {
ArrayList checkHistory = new ArrayList();
public ArrayList getCheckHistory() {
return checkHistorty;
}
}
因此,您可以从Account类调用checkHistory,这很有意义
Account myAccount = new Account();
ArrayList list = myAccount.getCheckHistory();
for (Check check : list) {
System.out.print(check.someCheckProperty);
}
标签:java
来源: https://codeday.me/bug/20191122/2061062.html