Java 创建两个子类用于检查和保存帐户。支票账户有透支限额,但储蓄账户不能透支

Java 创建两个子类用于检查和保存帐户。支票账户有透支限额,但储蓄账户不能透支,java,subclass,abstract,Java,Subclass,Abstract,已定义Account类以对银行帐户进行建模。帐户具有属性帐号、余额、年利率、创建日期以及存取资金的方法 现在创建两个子类用于检查和保存帐户。支票账户有透支限额(比如1000美元加上25美元的手续费),但储蓄账户不能透支 编写一个测试程序,创建Account、SavingsAccount和CheckingAccount的对象,并调用它们的toString()方法 上面是说明,下面是我的代码。我不知道如何将子类调用到主Account类中。我还想知道如何应用toString()方法,因为我也无法得到它

已定义Account类以对银行帐户进行建模。帐户具有属性帐号、余额、年利率、创建日期以及存取资金的方法

现在创建两个子类用于检查和保存帐户。支票账户有透支限额(比如1000美元加上25美元的手续费),但储蓄账户不能透支

编写一个测试程序,创建Account、SavingsAccount和CheckingAccount的对象,并调用它们的toString()方法

上面是说明,下面是我的代码。我不知道如何将子类调用到主Account类中。我还想知道如何应用toString()方法,因为我也无法得到它。我还在代码中保留了我的大部分注释,在代码中我尝试了不同的想法



套餐账户;
公共类CheckingAccount扩展帐户{
双重透支=-1000;
公共作废检查(双i){
//将双变量余额初始化为0.0
双平衡=0.0;
if(余额-i<透支){
System.out.println(“失败:透支不能超过1000美元。25美元以上”
+“透支费将记入您的账户。”);
余额=余额-25;}
其他的
平衡=平衡-i;
}   
}

套餐账户;
公共类SavingsAccount扩展帐户{
双重透支限额=0;
公共作废撤销(双w){
if(余额-w<透支限额)
System.out.println(“资金不足”);
其他的
平衡=平衡-w;
}
}

我不确定调用子类是什么意思,但toString方法的签名是

public String toString(){
}
由于默认情况下Java中的所有内容都是虚拟的,因此只需在子类中使用该方法即可覆盖它。根据我的猜测,这个问题似乎希望您调用toString方法中的各种方法,并返回所需信息的完整字符串

另一方面,要调用超类方法,即使子类在Java中重写它,语法是

super.function()

首先,您需要为储蓄帐户和支票帐户创建默认构造函数。然后您需要创建一个重载构造函数(假设您将向子类传递唯一的额外值)

至于toString(),您需要每个子类都有自己的子类

String toString(){
 String x = "Savings: " + totalSavings + ". And the fee's assessed are: " + fees";
  return x;
}

这将允许您调用
savingsAccount.toString()将打印信息。

您需要覆盖每个类的默认toString方法 例如,在Account类中

    @Override
    public String toString()
    {
        String str = "Id: "+ getId() +
                     "\nBalance:  " + getBalance()+
                     "\nAnnual Interest Rate: " + getAnnualInterestRate() +
                     "\n Monthly Interest: " + getMonthlyInterest() +
                     "\n Created on: " + getDateCreated();

        return str;
    }
然后,在主类中创建Account对象

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Account account = new Account(1122, 20000);
    System.out.println(account); // invoke toString method in Account class
}
结果将是: 身份证号码:1122 余额:20000.0 年利率:0.0 月利息:0.0 创建日期:2016年2月18日星期四15:16:47太平洋标准时间

类似地,您还需要重写子类的toString方法。但您需要使用super关键字连接超类的toString:

public String toString()
{
    String str=super.toString();// call superclass's toString()
    str+="...";
    return str;
}

默认情况下不会调用void函数toString(),这不太可能是您的意图。您可能还希望返回它,而不是打印它:)您可能需要在
公共字符串toString()上方添加
@Override
,具体取决于您使用的IDE是否正确,您需要返回它,因为
字符串
类型declarational非常值得一提,您可以只使用System.out.println(savingsAccount),默认情况下称为:)
String toString(){
 String x = "Savings: " + totalSavings + ". And the fee's assessed are: " + fees";
  return x;
}
    @Override
    public String toString()
    {
        String str = "Id: "+ getId() +
                     "\nBalance:  " + getBalance()+
                     "\nAnnual Interest Rate: " + getAnnualInterestRate() +
                     "\n Monthly Interest: " + getMonthlyInterest() +
                     "\n Created on: " + getDateCreated();

        return str;
    }
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Account account = new Account(1122, 20000);
    System.out.println(account); // invoke toString method in Account class
}
public String toString()
{
    String str=super.toString();// call superclass's toString()
    str+="...";
    return str;
}