投稿

ラベル(ローカルクラス)が付いた投稿を表示しています

[Java] ネストしたクラスについてのまとめ

クラス内に定義するクラスを総称してネストしたクラスと呼び、外側のクラスをエンクロージングクラスと呼びます。 ネストしたクラスには次の種類があります。 インナークラス staticインナークラス 匿名クラス ローカルクラス インナークラス インスタンス化 new エンクロージングクラス().new インナークラス() インナークラスのインスタンス化するには、エンクロージングクラスのインスタンスを先に生成する必要がある。 定義例 public class InnerTest { private class Test { private void method() { System.out.println("Test.method"); } } public static void main(String[] args) { new InnerTest().new Test().method(); } } インナークラス、およびそのメソッドのアクセス修飾子はpublic、protected、private、無しの4つとも指定できる。 privateを指定してもエンクロージングクラスからは呼び出すことができる。 実行結果 java InnerTest.java Test.method staticインナークラス インスタンス化 new インナークラス() staticインナークラスのインスタンス化には、エンクロージングクラスのインスタンスは必要ない。 staticインナークラスが外部のクラスファイルの場合は、「new エンクロージングクラス.インナークラス()」のように生成する。 定義例 public class InnerTest { private static class Test { private void method() { System.out.println("Test.method"); } } public static