在java中为chequing和saving account创建两个子类

在java中为chequing和saving account创建两个子类,java,Java,我需要为我的“Account”类创建一个“chequingAccount”和“savingAccount”子类。此外,每个子类都有自己的“帐号”。例如,支票账户应以“CA-#####”开头,储蓄账户应以“SA-####”开头(任何数字)。我不知道如何使“Account”类识别哪个帐户,而只知道帐号的前两个字母。以下是我在Account类代码中的操作方法(可能是错误的): public class Account { private String accountNumber; p

我需要为我的“Account”类创建一个“chequingAccount”和“savingAccount”子类。此外,每个子类都有自己的“帐号”。例如,支票账户应以“CA-#####”开头,储蓄账户应以“SA-####”开头(任何数字)。我不知道如何使“Account”类识别哪个帐户,而只知道帐号的前两个字母。以下是我在Account类代码中的操作方法(可能是错误的):

public class Account {

    private String accountNumber;
    private double balance;
    private boolean active;
    private ArrayList<String> transactionInfo;

    /**
     * Default constructor to create Account objects
     */
    public Account() {
        super();

    }

    /**
     * Overloaded Account constructor
     * 
     * @param accountNumber
     *            to set the accountNumber field
     * @param balance
     *            to set the balance field
     * @param transactionInfo to add transaction information about every deposit and withdrawl
     */
    public Account(String accountNumber, double balance) {
        super();
        if (accountNumber != null) {
            this.accountNumber = accountNumber;
        }
        setBalance(balance);
        active = true;
        transactionInfo = new ArrayList<String>();
    }

    /**
     * accessor for the accountNumber field
     * 
     * @return the accountNumber as a String
     */
    public String getAccountNumber() {
        return accountNumber;
    }

    /**
     * Method to change account types
     * @param accountNumber the accountNumber to set
     */
    public void setAccountNumber(String accountNumber) {
        if(getAccountNumber().substring(0,1).equals("SA")) {
            this.accountNumber = ;
        } else if(getAccountNumber().substring(0,1).equals("CH")) {
            this.accountNumber = "Chequing account";
        } else if(getAccountNumber().substring(0,1).equals("GL")){
            this.accountNumber = "Gold account";
        } else {
            System.out.println("ERROR");
        }
    }
}
公共类帐户{
私有字符串accountNumber;
私人双平衡;
私有布尔活动;
私人ArrayList交易信息;
/**
*创建帐户对象的默认构造函数
*/
公共帐户(){
超级();
}
/**
*重载帐户构造函数
* 
*@param accountNumber
*设置accountNumber字段的步骤
*@param余额
*平衡场
*@param transactionInfo添加有关每次存款和取款的交易信息
*/
公共帐户(字符串帐号,双倍余额){
超级();
if(accountNumber!=null){
this.accountNumber=accountNumber;
}
立根平衡(平衡);
主动=真;
transactionInfo=新的ArrayList();
}
/**
*accountNumber字段的访问器
* 
*@以字符串形式返回accountNumber
*/
公共字符串getAccountNumber(){
返回帐号;
}
/**
*方法更改帐户类型
*@param accountNumber要设置的accountNumber
*/
public void setAccountNumber(字符串accountNumber){
if(getAccountNumber().substring(0,1).equals(“SA”)){
this.accountNumber=;
}else if(getAccountNumber().substring(0,1).equals(“CH”)){
this.accountNumber=“Chequing account”;
}else if(getAccountNumber().substring(0,1).equals(“GL”)){
this.accountNumber=“黄金账户”;
}否则{
System.out.println(“错误”);
}
}
}
这是我的“ChequingAccount”代码:

公共类ChequingAccount扩展帐户{
/**
*变数
*/
私人最终双倍费用=1.0;
国际支票号码;
/**
*默认构造函数
*/
公共支票帐户(){
超级();
}
/**
*重载构造函数
*
*@param accountNumber字符串初始化accountNumber字段
*@param balance String初始化余额字段
*@param numberofchecks以初始化numberofchecks字段
*/
公共支票账户(字符串账户编号、双倍余额、整数支票){
超级(帐号、余额);
设置支票数量(3);
}
/**
*超越平衡法
*
*@param balance要设置的余额
*/
公共余额(双倍余额){
如果(余额>0){
超级平衡(平衡);
}否则{
System.out.println(“数字应大于0”);
}
}
/**
*@以整数形式返回NumberOfChecks
*/
公共int GetNumberOfChecks(){
退回支票数目;
}
/**
*
*@param numberofchecks设置numberofchecks字段
*/
公共作废SETNUMBEROFCHEKS(int NUMBEROFCHEKS){
如果(支票数量>=0){
this.numberofchecks=numberofchecks;
}否则{
System.out.println(“数字应大于0”);
}
}
/**
*重写substractFromBalance方法
*@param amount要从帐户中减去的金额
*/
公共无效减去余额(双倍金额){
如果(金额>0){

如果(getNumberOfCheques()帐户不应该知道这一点。我真的不理解您的问题。帐户甚至不应该知道有子类。此检查将始终为假:
getAccountNumber().substring(0,1)。等于(“SA”)
,因为
子字符串(0,1)
将返回长度为1的字符串。您可能希望使用
子字符串(0,2)
获取字符串中的前两个字符。Account不应该知道这一点。我不太理解您遇到的问题。Account甚至不应该知道有子类。此检查将始终为false:
getAccountNumber().substring(0,1).equals(“SA”)
,因为
substring(0,1)
将返回长度为1的字符串。您可能希望使用
substring(0,2)
获取字符串中的前两个字符。
public class ChequingAccount extends Account {
    /**
     * Variables
     */
    private final double FEE = 1.0;
    int numberOfCheques;

    /**
     * Default constructor
     */
    public ChequingAccount() {
        super();
    }

    /**
     * Overloaded constructor
     *
     * @param accountNumber String to initialize the accountNumber field
     * @param balance String to initialize the balance field
     * @param numberOfCheques to initialize the numberOfCheques fields
     */
    public ChequingAccount(String accountNumber, double balance, int numberOfCheques) {
        super(accountNumber, balance);
        setNumberOfCheques(3);
    }

    /**
     * Override setBalance method
     *
     * @param balance the balance to set
     */
    public void setBalance(double balance) {
        if (balance > 0) {
            super.setBalance(balance);
        } else {
            System.out.println("Number should be more than 0");
        }
    }

    /**
     * @return the numberOfCheques as an int
     */
    public int getNumberOfCheques() {
        return numberOfCheques;
    }

    /**
     *
     * @param numberOfCheques to set numberOfCheques field
     */
    public void setNumberOfCheques(int numberOfCheques) {
        if (numberOfCheques >= 0) {
            this.numberOfCheques = numberOfCheques;
        } else {
            System.out.println("Number should be more than 0");
        }
    }

    /**
     * Override substractFromBalance method
     * @param amount the amount to substract from account
     */
    public void subtractFromBalance(double amount) {
        if (amount > 0) {
            if (getNumberOfCheques() <= 2) {
                super.subtractFromBalance(amount);
                setNumberOfCheques(getNumberOfCheques() + 1);
            } else {
                System.out.println("You have used your monthly limit");
            }
        } else {
            System.out.println("ERROR. Invalid number");
        }
    }

    @Override
    public String toString() {
        return "ChequingAccount [numberOfCheques=" + numberOfCheques + ", getAccountNumber()=" + getAccountNumber() +
            ", toString()=" + super.toString() + "]";
    }



}