2010-12-30 8 views
0

変数がローカルスコープとグローバルスコープの両方で初期化される場合thisキーワードを同じクラスに使用せずにグローバルスコープを使用するにはどうすればよいですか?Java変数スコープ

+6

Javaのコンテキストで「グローバルスコープ」とは何を意味するのかよくわかりません。コードサンプルはこの質問のために長い道のりになります。 – MatrixFrog

+2

「this」の使用を避ける理由は何ですか?それがそれを行う方法です。 – StaxMan

+0

Javaが*グローバルスコープを持っていないことを考えると、私はその質問を理解していません。あなたは明確にしていただけますか? –

答えて

2

thisを使用しない場合は、常にローカル変数になります。

+1

インスタンス変数と同じ名前のローカルスコープに変数がない場合は、インスタンス変数を 'this'プレフィックスなしで使用できます。 –

2

これがなければ不可能です。現象はvariable hidingと呼ばれます。

2

をあなたはthisを持つ変数の参照をスコープしている場合、それは常にインスタンス変数を指します。

メソッドがクラスレベルの変数と同じ名前を持つローカル変数を宣言する場合、前者は後者を「シャドウ」します。メソッド本文の中からクラスレベルの変数にアクセスするには、thisキーワードを使用します。

+1

これで変数参照をスコープすると、常にFIELD変数を指​​します。 –

+0

@Vladimirあなたは正しいです。私はそれを修正しました。それは間違いでした。 –

2
public class VariableScope { 

    int i=12;// Global 
    public VariableScope(int i){// local 

     System.out.println("local :"+i); 
     System.out.println("Global :"+getGlobal()); 
    } 
    public int getGlobal(){ 
     return i; 
    } 
}