Javaの - 静的クラス内の非静的フィールド

juztcode:

それは、それはそこに先進的な教祖にかなり精通している可能性のあるコードのようなパターンに出くわす初めてです。

public static class Myclass{
    public static class myChildClass{
        public int a =1;   //this doesn't give an error although I expected it should be declared static
    }
}  

私は、静的な内部クラスをインスタンス化することはできませんし、私は変数にアクセスすることはできませんint aので、この変数はクラスにプライベートになるん、クラスの外?なぜそれが宣言静的で文句の代わりにこれを許可するJavaのでしょうか?

アンディ・ターナー:

私は、静的な内部クラスをインスタンス化することはできません

あなたができるもちろん:

Myclass.myChildclass m = new Myclass.myChildclass();

そして、私は外クラスint型の変数にアクセスすることはできません

はい、できます:

System.out.println(m.a);

したがって、この変数はクラスにプライベートになるのでしょうか?

いいえ、それはプライベートではありませんので。

なぜそれが宣言静的で文句の代わりにこれを許可するJavaのでしょうか?

私はあなたを考える誤解静的クラスが何であるか:それは単にそれを作成囲むクラスのインスタンスへの暗黙的な参照せずに、ネストしたクラスです。そのメンバーは静的であるための必要はありません。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=401134&siteId=1