3

このクラスでは、

class Person {
    int age;
    public Person(int age) {
        this.age = age;
    }
}

私の教科書では、著者はthis.age=ageの代わりにage=ageと書いても大丈夫だと言っています。

パラメータとデータメンバーの名前が同じ場合、代入記号の左側がクラスのデータメンバーとして扱われ、右側がパラメータになると彼は言います。

コンピューターにjdk1.7をインストールしていますが、age=ageのようなコードは効果がありません。これはどのバージョンのJavaで機能しますか?

4

3 に答える 3

4

その本は完全に間違っているので、交換する必要があります。別の本を使用してください。 age = age効果がなく、コンパイラの警告が表示されることを願っています。

于 2013-03-11T14:14:07.687 に答える
4

パラメータとデータメンバが同じ名前の場合、代入記号の左側がクラスのデータメンバとして扱われ、右側がパラメータになるという。

これは、Sun / Oracle によってリリースされた Java のバージョン、または Java 言語仕様のリリースに準拠する言語では有効ではありません。

この主張を見つけた本の名前と著者を教えてください。

于 2013-03-11T14:15:14.470 に答える
3

私はこれを見たことがありません。少なくとも、Java1.4はこの点で1.7と同じように機能すると確信しています。

使用に固執するだけです:

this.age = age;

おそらく教科書はこれがうまくいくので、このケースを参照しています。ローカル変数がないため、クラスフィールドageに割り当てられます。customAgeage

class Person {
    int age;
    public Person(int customAge) {
        age = customAge;
    }
}
于 2013-03-11T14:14:14.940 に答える