インナークラス(内部クラス)は、別のクラスの内部で定義されたクラスのことを指します。インナークラスは、外部クラスのメンバーとして扱われ、外部クラスの private メンバーにもアクセスできます。
インナークラスには、以下の4種類があります:
-
メンバークラス(Member Class)
- 外部クラスのメンバーとして定義されるクラス
- static修飾子を付けることで、静的メンバークラスになる
- 非静的メンバークラスは、外部クラスのインスタンスに関連付けられる
-
ローカルクラス(Local Class)
- メソッド内で定義されるクラス
- メソッドのローカル変数のスコープ内でのみ有効
- 外部クラスの private メンバーにアクセス可能
-
匿名クラス(Anonymous Class)
- 名前を持たないクラス
- クラス宣言と同時にインスタンスを生成
- 一度しか使用されない場合に便利
-
静的ネストクラス(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();
}
}
インナークラスは、外部クラスとの密接な関係を表現するために使用されます。また、コードの可読性や管理性を向上させるために役立ちます。ただし、インナークラスの乱用は避け、必要な場合にのみ使用するようにしましょう。
Top comments (0)