0

宿題に苦労しているセリフがあります。

特定の金額を口座から引き出して入金する方法と、ある金額をある口座から別の口座に転送する転送方法を提供することになっています。transfer メソッドは、クラス名を使用して呼び出すことができます。

最後の文の意味がよくわかりません。これが私が持っているものです。

public class CbtBank {
    private double balance;
    private String firstName, lastName;
    private int accountNumber;

    public CbtBank(String firstName, String lastName, int accountNumber, double balance) {
        this.balance = balance;
        this.firstName = firstName;
        this.lastName = lastName;
        this.accountNumber = accountNumber;
    }

    public void transfer(CbtBank from, CbtBank to, double amount){
        to.balance += amount;
        from.balance -= amount;
    }
}

そして私のmain.java;

public static void main(String[] args) {
    CbtBank person1 = new CbtBank("can", "berk", 3123, 100.0);
    CbtBank person2 = new CbtBank("can2", "berk2", 3124, 200.0);
    CbtBank.transfer(person1, person2, 50.0);
}

このように動作させることはできませんが、これが意図されているかどうかさえわかりません。何か案は?

4

5 に答える 5

1

ドキュメントで

このセクションでは、 static キーワードを使用して、クラスのインスタンスではなくクラスに属するフィールドとメソッドを作成する方法について説明します。

次に、要件はインスタンスではなくクラスに属するメソッドです。

静的メソッドはその名前でアクセスできるため、静的メソッドを作成CbtBank#transferします。

class CbtBank
{
     public static void transfer(CbtBank to,CbtBank from,double value)
     {
         to.balance += amount;
        from.balance -= amount;
     }
}
于 2013-11-04T16:43:49.730 に答える
0

「静的」キーワードがありませんでした。したがって、正しいバージョンは次のとおりです。

    public static void transfer(CbtBank from, CbtBank to, double amount){

    to.balance += amount;
    from.balance -= amount;

}

答えてくれてありがとう。

于 2013-11-04T16:46:00.197 に答える
0

staticクラス名を使用してメソッドを呼び出すことができます。transferメソッドの意味を静的に理解する必要があるかもしれません。それをしたら、transferここで述べたようにメソッドを呼び出します。

CbtBank.transfer(person1, person2, 50.0);
于 2013-11-04T16:41:09.247 に答える
0

メソッドを作成するだけstaticです。このようにして、実際のオブジェクトなしでクラス自体を使用して呼び出すことができます。

public static void transfer(CbtBank from, CbtBank to, double amount){
    to.balance += amount;
    from.balance -= amount;
}
于 2013-11-04T16:46:17.163 に答える
0

の概念に関係していstaticます。これは、特定の型の具体的なインスタンスではなく、クラス自体に関連する変数またはメソッドを定義します。

ここで、転送はアカウント固有のものではなく、ロジックであり、オブジェクトはPlain Old Java ObjectCbtBankと呼ばれるものです。ロジックは別の場所にあるはずですが、この場合はクラス内にあります。

次のように考えてみてください。アカウント自体がトランザクションを担当するべきではありません。アカウント A は、アカウント B の個人情報であるため、アカウント B の残高を改ざんしてはなりません。

私だったら、メソッドを別のクラスにするように依頼しますが、割り当てには固執します。メソッドを次のように宣言しstatic、静的呼び出しを行います。

Account.transfer(CbtBank from, CbtBank to, double amount)
于 2013-11-04T16:50:58.027 に答える