teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足追加

2017/03/26 06:47

投稿

amadablam
amadablam

スコア417

answer CHANGED
@@ -1,2 +1,3 @@
1
1
  内部クラス(Inner class)は外側のクラス(Enclosing class)のインスタンス・メンバー同様に**「インスタンス」にのみ関連付けられる**ため、インスタンスを生成することなく使用できるstaticメンバーを宣言することはできません。
2
- ちなみに仕様上は「static内部クラス」というものは存在しません。あるクラスの中に宣言されたクラスは「入れ子クラス(Nested class)」と呼ばれますが、非staticなものだけが「内部クラス(Inner class)」であり、static宣言された入れ子クラスは内部クラスではなく「Static nested class」と呼ばれます。この辺りの話は、[Java TutorialのNested classes](http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)にも詳しく書かれているので読んでみてください。
2
+ ちなみに仕様上は「static内部クラス」というものは存在しません。あるクラスの中に宣言されたクラスは「入れ子クラス(Nested class)」と呼ばれますが、非staticなものだけが「内部クラス(Inner class)」であり、static宣言された入れ子クラスは内部クラスではなく「Static nested class」と呼ばれます。この辺りの話は、[Java TutorialのNested classes](http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)にも詳しく書かれているので読んでみてください。
3
+ したがって、内部クラスではstaticフィールドは宣言できませんが、staticキーワードを付けた入れ子クラスにすることでstaticフィールドを宣言することができます。