2016-02-18 2 views
0

Тип учетной записи был определен для моделирования банковского счета. У учетной записи есть номер счета свойств, баланс, годовая процентная ставка и дата создания, а также способы внесения и вывода средств.Создайте два подкласса для проверки и сохранения учетных записей. Контрольный счет имеет лимит овердрафта, но сберегательный счет нельзя переоценить.

Теперь создайте два подкласса для проверки и сохранения учетных записей. Контрольный счет имеет лимит овердрафта (скажем, 1000 долларов США с платой за 25 долларов США), но сберегательный счет нельзя переубедить.

Напишите тестовую программу, которая создает объекты Account, SavingsAccount и CheckingAccount и вызывает их метод toString().

Выше приведены инструкции, и ниже приведен мой код. Я не могу понять, как вызвать подклассы в основной класс учетной записи. Я также хотел бы знать, как применить метод toString(), потому что я тоже не могу это получить. Я также сохранил большинство своих комментариев в своем коде, где я пробовал разные идеи.


/* 

//Calls both subclasses to the main. As well as a few other variables. 
SavingsAccount savings = new SavingsAccount(); 
CheckingAccount checking = new CheckingAccount(); 
Account account; 


    double balance = 0.0; 
    double withdrawal = 0.0; 
    double deposit = 0.0; 

    System.out.println(checking); 
    CheckingAccount.getwithdrawal(10.50); 
    System.out.println(savings); 
    SavingsAccount.deposit(5.0); 
    System.out.println(account); 
    }  
} 

*/ 

package account; 



    public class Assignment5 { 

    SavingsAccount savings = new SavingsAccount(); 
    CheckingAccount checking = new CheckingAccount(); 
    Account account; 

    public static void main (String[] args) { 
    Account account = new Account(1122, 20000); 

    /* System.out.print("After Creation, "); 
    Print (account.getBalance()); 
    Account.setAnnualInterestRate(4.5); 
    System.out.print("After Withdrawal of $2,500, "); 
    account.withdraw(2500); 
    Print (account.getBalance()); 
    System.out.print("After Deposit of $3,000, "); 
    account.deposit(3000); 
    Print (account.getBalance()); 
    System.out.println("Balance is " + account.getBalance()); 
    System.out.println("Monthly interest is " + 
    account.getMonthlyInterest()); 
    System.out.println("This account was created at " + 
    account.getDateCreated()); */ 

    } 
    // Extra Print Method 
    public static void Print (double x){ 
    System.out.printf("The current balance is "+" $ "+"%4.2f"+"%n",x); 
    } 
    } 



    class Account { 
    private int id; 
    double balance; 
    private static double annualInterestRate; 
    private java.util.Date dateCreated; 

    public Account() { 
    dateCreated = new java.util.Date(); 
    } 

    public Account(int newId, double newBalance) { 
    id = newId; 
    balance = newBalance; 
    dateCreated = new java.util.Date(); 
    } 

    public int getId() { 
    return this.id; 
     } 

    public double getBalance() { 
    return balance; 
    } 

    public static double getAnnualInterestRate() { 
     return annualInterestRate; 
     } 

    public void setId(int newId) { 
    id = newId; 
    } 

    public void setBalance(double newBalance) { 
    balance = newBalance; 
    } 

    public static void setAnnualInterestRate(double newAnnualInterestRate) { 
    annualInterestRate = newAnnualInterestRate; 
    } 

public double getMonthlyInterest() { 
    return balance * (annualInterestRate/1200); 
} 

    public java.util.Date getDateCreated() { 
    return dateCreated; 
    } 

    public void withdraw(double amount) { 
    balance -= amount; 
} 

    public void deposit(double amount) { 
    balance += amount; 
    } 
    } 

package account; 

public class CheckingAccount extends Account { 


double overDraft = -1000; 

    public void checking(double i) { 

     //initializes double variable balance as 0.0 
     double balance = 0.0; 
     if (balance - i < overDraft){ 
       System.out.println("Failure: Can't overdraft more than   $1,000. A $25 +" 
         + "overdraft fee will be issued to your account. "); 
      balance = balance - 25; } 
     else 
      balance = balance - i; 
     } 
    } 

package account; 

    public class SavingsAccount extends Account{ 
    double overdraftLimit = 0; 

    public void withdraw (double w) { 
     if (balance - w < overdraftLimit) 
       System.out.println("Insufficient Funds"); 
     else 
      balance = balance - w; 
    } 
} 

ответ

0

Я не уверен, что вы имеете в виду, ссылаясь на подклассы, но подпись для метода ToString является

public String toString(){ 
} 

С канун rything является виртуальным в Java по умолчанию, тогда просто попросите этот метод в подклассах переопределить его. Из того, что я могу догадаться, кажется, что вопрос требует, чтобы вы вызывали различные методы в методе toString и возвращали полную строку всей необходимой информации.

На другой ноте, чтобы вызвать метод суперкласса, даже если подкласс замещает его в Java, синтаксис

super.function() 
0

первое, что вам нужно создать конструктор по умолчанию для сберегательного счета и расчетного счета. Затем вам нужно создать перегруженный конструктор (предполагается, что вы будете проездом уникальные дополнительные значения в подклассах)

public savingsAccount() { 
super(); 
} 
//overloaded constructor 
public savingsAccount(int newId, double newBalance, int anotherVariable) { 
super(newID, newBalance); 
this.anotherVariable = anotherVariable; //this is unique to this specific class 

} 

Что касается ToString(), вам нужно каждый подкласс иметь свой собственный.

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

Это позволит вам звонить savingsAccount.toString();, который будет печатать информацию.

+0

Функция void toString по умолчанию не называется, маловероятно, что это намерение. – Untitled123

+1

вы, скорее всего, захотите вернуть его, а не распечатать его :) – Untitled123

+0

вам может потребоваться добавить '@ Override' над' public String toString() 'в зависимости от используемой вами IDE – tmaxxcar

0

Вам необходимо переопределить метод по 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 
} 

результат будет: Id: 1122 Баланс: 20000,0 Годовая процентная ставка: 0,0 Ежемесячный процент: 0.0 Дата создания: Thu Feb 18 15:16:47 PST 2016

Аналогичным образом вам также необходимо переопределить метод toString для подкласса. Но вам нужно подключить суперстраницу toString, используя ключевое слово super:

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