2011-01-27 5 views
10

どうすればいいですか?メンバ変数とローカルメソッド変数の名前を同じにすることはできますか?

class Test { 
    private int var1; 

    public Test(int var1) { 
     var1 = var1; //set the member variable to what was passed in 
    } 
} 

非常に明白な答えがあると確信しています。今は私を逃しているだけです。

+0

良いコードを見てください。正確にthis( 'this.x.x = x')がセッターとコンストラクターに使用されることがわかります。新しい名前を発明することには意味がありません。 – maaartinus

答えて

19

はい、同じ名前を共有できます。しかし、インスタンス変数を参照するために、あなたはthis接頭辞を使用する必要があります。

public Test(int var1) { 
    this.var1 = var1; 
} 
+1

"これ"は通常オプションですか?しかし、この場合、名前が矛盾しているので、それが必要ですか?私はそれを正しく理解していますか? – Greg

+1

@Greg - 正確に。 –

+2

この場合、名前が競合しているため、*別の(特定の)スコープから参照を取得するようにJVMに指示する必要があります。 "スーパー。"同様に動作しますが、拡張しているクラスから変数/メソッドを取得します(さらに大きなスコープとなります)。一部の言語は「グローバル」を提供することさえあります。型修飾子は使用できますが、Javaは使用できません。 – Dolph

2

はい、我々はできます。ただ "できる"。それは良くない。

+3

-1 "それは良くありません"というのは役に立ちません。さらに、これが*「良い」という一般的なパターンがあります。 – Dolph

+0

私は言葉に気付くでしょう。人々は私の答えで何を意味するのかを知りたいと思っています。 –

+2

答えがどういう意味なのでしょうか? – jzd

4

はい、可能ですが、ローカル変数はクラス変数を非表示にします。

関連する問題