DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

12章17

インナークラス(内部クラス)は、別のクラスの内部で定義されたクラスのことを指します。インナークラスは、外部クラスのメンバーとして扱われ、外部クラスの private メンバーにもアクセスできます。

インナークラスには、以下の4種類があります:

  1. メンバークラス(Member Class)

    • 外部クラスのメンバーとして定義されるクラス
    • static修飾子を付けることで、静的メンバークラスになる
    • 非静的メンバークラスは、外部クラスのインスタンスに関連付けられる
  2. ローカルクラス(Local Class)

    • メソッド内で定義されるクラス
    • メソッドのローカル変数のスコープ内でのみ有効
    • 外部クラスの private メンバーにアクセス可能
  3. 匿名クラス(Anonymous Class)

    • 名前を持たないクラス
    • クラス宣言と同時にインスタンスを生成
    • 一度しか使用されない場合に便利
  4. 静的ネストクラス(Static Nested Class)

    • static修飾子が付けられたメンバークラス
    • 外部クラスのインスタンスに関連付けられない
    • 外部クラスの static メンバーにのみアクセス可能

以下は、インナークラスの例です:

public class OuterClass {
    private int outerField = 10;

    // メンバークラス
    public class MemberClass {
        public void accessOuterField() {
            System.out.println("Accessing outer field: " + outerField);
        }
    }

    // 静的ネストクラス
    public static class StaticNestedClass {
        public void doSomething() {
            System.out.println("Doing something in static nested class.");
        }
    }

    public void someMethod() {
        // ローカルクラス
        class LocalClass {
            public void doSomething() {
                System.out.println("Doing something in local class.");
            }
        }
        LocalClass localObj = new LocalClass();
        localObj.doSomething();
    }

    public void createAnonymousClass() {
        // 匿名クラス
        Runnable anonymousObj = new Runnable() {
            @Override
            public void run() {
                System.out.println("Running in anonymous class.");
            }
        };
        anonymousObj.run();
    }
}
Enter fullscreen mode Exit fullscreen mode

インナークラスは、外部クラスとの密接な関係を表現するために使用されます。また、コードの可読性や管理性を向上させるために役立ちます。ただし、インナークラスの乱用は避け、必要な場合にのみ使用するようにしましょう。

Top comments (0)