0

必须实现抽象方法语句(在超类中)以返回语句的字符串表示。

所以我做了以下事情:

 public abstract String statement(); //The abstract method in my super class

..和我的子类中的方法:

//@Override
public String statement() 
{
    return String.format("Account no %d has balance R%d and minimum balance R%d", accountNumber,balance,getMinBalance());
}

我的主类只是调用Account类(有问题的超类),如下所示:

new SavingsAccount(Integer.toString(ao[i]),ao[i+1],ao[a]); //ao being the array which contains the values.

但是,控制台只是终止而不显示任何内容(我也不熟悉实现)。

这是完整的代码:

主要的:

public class AccountList 
{
    public static void main(String[] args) 
    {
        int[] ao = {00000,0,0,12345,500,250,23456,230,-50,34567,340,500,45678,-320,-50,56789,-320,-500};

        for(int i=0;i<ao.length;i=i+3)
        {
            int a = i+2;
            if(ao[a]>=0)
            {

                new SavingsAccount(Integer.toString(ao[i]),ao[i+1],ao[a]);
            }
            if(ao[a]<=0)
            {

                new ChequeAccount(Integer.toString(ao[i]),ao[i+1],ao[a]);
            }   
        }
    }
}

超级班:

public abstract class Account implements InterestAccount
{
    static String accountNumber;
    int balance;

    public Account()
    {
        accountNumber = "00000";
        balance = 0;
        //statement();
    }
    public Account(String accountNumber,int balance)
    {
        setAccountNum(accountNumber);
        setBalance(balance);
    }
    public void setAccountNum(String accNum)
    {
        accountNumber = accNum;
    }
    public void setBalance(int balance)
    {
        this.balance = balance;
    }
    public String getAccountNumber()
    {
        return accountNumber;
    }
    public int getBalance()
    {
        return balance;
    }
     public abstract String statement();
}

子类之一:

public class SavingsAccount extends Account
{
    int minBalance;

    public SavingsAccount()
    {
        super();
        minBalance = 0;
    }
    public SavingsAccount(String accountNum,int minBalance,int balance)
    {
        super(accountNum,balance);
        setMinBalance(minBalance);
    }
    public void setMinBalance(int minBalance)
    {
        this.minBalance = minBalance;
    }
    public int getMinBalance()
    {
        return minBalance;
    }
    @Override
    public int calculateInterest(int value) {

        if(minBalance>balance)
        {
            return 0;           
        }
        else
        {
            return (minBalance*balance)/100;
        }
    }
    //@Override
    public String statement() 
    {
        return String.format("Account no %d has balance R%d and minimum balance R%d", accountNumber,balance,getMinBalance());
    }

}
4

2 回答 2

1

你永远不会调用方法语句。

1) 创建一个新的 SavingsAccount 对象

new SavingsAccount(Integer.toString(ao[i]),ao[i+1],ao[a]);

2) 构造函数类被上述语句调用

public SavingsAccount(String accountNum,int minBalance,int balance)
{
    super(accountNum,balance);
    setMinBalance(minBalance);
}

3) 子类然后调用超类方法 public Account(String accountNumber,int balance) { setAccountNum(accountNumber); 设置平衡(平衡);}

4) 调用 SetBalance

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

5) 调用 setMinBalance

public void setMinBalance(int minBalance)
{
    this.minBalance = minBalance;
}

6) 创建对象 SavingsAccount 结束

没有单个语句调用方法语句

于 2013-06-05T09:48:58.560 回答
0

了解更多代码可能会有所帮助,但据我所知,有一些可能的情况:

  • 您的代码运行并终止,没有错误。您看不到任何内容的原因是,没有任何内容写入标准输出流(例如通过 System.out.println())。
  • 您的代码有一些内部问题,这会导致异常,由于日志记录机制损坏,该异常再次未显示。

在任何情况下,使用调试器来单步调试您的代码并确定哪些部分运行良好以及是否有任何失败。它可能有助于提取一些局部变量,给它们适当的有意义的名称并在执行期间观察它们的内容。

于 2013-06-04T14:24:57.713 回答