-4

bank というクラスとそのサブクラスである ATM を作成し、サブクラス ATM のインスタンスを宣言したいと考えています。以下に示すように宣言すると、エラーが発生します。

package bank;
import java.util.Scanner;
public class Bank {// Bank class
    protected int PIN,chequing_balance,savings_balance;
    public void set_PIN(int PIN){
   this.PIN= PIN;
}
public int get_PIN(){
    return this.PIN;
}
public void set_chequing_balance(int chequing_balance){
   this.chequing_balance=chequing_balance; 
}    
public int get_chequing_balance(){
    return chequing_balance;
}
public void set_savings_balance(int savings_balance){
   this.savings_balance=savings_balance; 
}    
public int get_savings_balance(){
    return savings_balance;
}




public class ATM extends Bank{// ATM is a subclass of Bank
    private void ATM(){
    PIN=1207605;
    chequing_balance=0;
    savings_balance=0;
}
    public void deposit_savings(int amount){
    this.savings_balance+=amount;
}
    public void withdrawl_savings(int amount){
    this.savings_balance-=amount;
}
        public void transfer_savings_to_chequing(int amount){
   this.chequing_balance+=amount;
   this.savings_balance-=amount;
}
        public void deposit_chequing(int amount){
    this.chequing_balance+=amount;
}
    public void withdrawl_chequing(int amount){
    this.chequing_balance-=amount;
}
        public void transfer_chequing_to_savings(int amount){
   this.savings_balance+=amount;
   this.chequing_balance-=amount;
}

}
    public static void main(String[] args) {
        int key,amount;
        ATM x= new ATM(); // declaration of instance of ATM subclass
        Scanner input= new Scanner(System.in);
       do{
           System.out.println("Please enter transaction type  1.Deposit, 2. Withdraw 3. Transfer ");
           key=input.nextInt();

        }while(key<1||key>3);
   do{
       System.out.println("Please enter desired amount");
       amount=input.nextInt();
   }while(amount<0);
   if (key==1)
   {
       System.out.println("Please enter account desired 1. Chequing 2. Savings");
       key=input.nextInt();
       if (key==1)
       {
           x.deposit_chequing(amount);
       }
       else if(key==2)
       {
           x.deposit_savings(amount);
       }    
   }
   else if (key==2)
   {
       System.out.println("Please enter account desired 1. Chequing 2. Savings");
       key=input.nextInt();
       if(key==1)
       {
           x.deposit_chequing(amount);
       }
       else if(key==2)
       {
           x.deposit_savings(amount);
       }
   }
   else if(key==3)
   {
    System.out.println("Please enter type of transaction you want 1. Chequing to Savings 2. Savings to Chequing");  
    key=input.nextInt();
    if (key==1)
    {
        x.transfer_chequing_to_savings(amount);
    }
    else if (key==2)
    {
        x.transfer_savings_to_chequing(amount);
    }
   }
}
}
4

2 に答える 2

2
private void ATM(){

それは非公開であり、コンストラクターではなく、メソッドです。コンストラクターには戻り値の型があってはなりません。

また、ATM は Bank を拡張するべきではありません。

于 2012-10-31T03:37:37.517 に答える
0

コンストラクターは、次のようにする必要がある戻り値の型を宣言しないでください。

public ATM() {
   ....
}

また、サブクラスがある場合は、IS-A テストに合格する必要があります。適切なサブクラスになるためには、すべてのサブクラスがこのテストに「はい」と答える必要があります。ATMは銀行ですか?うーん、正確ではありません。ATM のスーパークラスを考え出すことはできますが、Bank はそうではないかもしれません。銀行は多数の ATM を所有している場合があります。ATM IS-A AccountAccessPoint または IS-A CashDispenser。しかし、これはよりモデリングの練習です。

于 2012-10-31T03:41:02.987 に答える