2011-01-17 6 views
1

のは、我々は次のコードを持っていると仮定してみましょう:クラスのプライベートメンバー

public class TestScope { 
     private int a = 1; 
     public static void main(String[] args) { 
      TestScope ts = new TestScope(); 
      ts.a = 6; 
      System.out.println(ts.a); 
     } 
    } 

ラインでなぜ:ts.a = 6;私はプライベート変数aへのアクセスを得ることができますか? プライベートメンバーには外部からアクセスできないと思いました。私はこの例を賞賛していません。

+1

[なぜmainメソッドからプライベート変数にアクセスできますか?](http://stackoverflow.com/questions/4707504/why-can-i-access-a-private-variable-from-main-メソッド) – cdhowie

答えて

5

変数またはメソッドのみクラス定義内部にアクセスすることができることを意味します。 aがインスタンス変数であるということは、同じクラスの静的パブリックメソッドによってアクセスできないということを意味するものではありません。

public static void main(String[])は、別のクラスの中にあった場合aが他のクラスから隠されているので、ts年代aにアクセスすることはできません。

6

静的メソッドは、依然として宣言されているクラスの一部とみなされ、したがってプライベートメソッド/フィールドにアクセスできます。

別のクラスにmainメソッド(またはその他の静的メソッドやインスタンスメソッド)がある場合は、実際にはアクセスできません。

+0

以上、クラス内で定義された静的メソッド*は引き続き*クラス*の一部とみなされます。 –

+0

確かに、私の記事を明確にした。 – helloworld922

0

あなたは外にいません。同じクラスです。

2

静的メソッドは、そのクラスの「一部」とみなされるため、そのインスタンスへのプライベートスコープアクセスがあります。この同じ質問は、数日前にhereに取り組まれました。 amain(String[])、両方のクラスの定義TestScope

専用の一部であるためにです

関連する問題