Java内部クラスの実装方法は
Java 内部クラスの実装方法は次のように分類できます。
- メンバ内側クラス:外部クラスのメンバとして、別のクラスを内部的に定義します。メンバ内側クラスは、外部クラスのメンバ変数とメソッド(プライベートメンバを含む)にアクセスできます。
public class OuterClass {
private int outerVar;
public class InnerClass {
public void innerMethod() {
outerVar = 10; // 访问外部类的成员变量
outerMethod(); // 访问外部类的方法
}
}
public void outerMethod() {
// ...
}
}
- 静的内部クラス:メンバー内部クラスと異なり、静的内部クラスは外部クラスへの参照を持たず、外部クラスのインスタンスを作成せずに静的内部クラスのインスタンスを作成できます。
public class OuterClass {
private static int outerVar;
public static class InnerClass {
public void innerMethod() {
outerVar = 10; // 访问外部类的静态成员变量
outerMethod(); // 访问外部类的静态方法
}
}
public static void outerMethod() {
// ...
}
}
- メソッド内クラス: クラスをメソッド内部に定義する。メソッドのローカル変数として扱われ、メソッド内のみでアクセス可能で、メソッド外からはアクセスできない。
public class OuterClass {
public void outerMethod() {
class InnerClass {
public void innerMethod() {
// ...
}
}
InnerClass inner = new InnerClass();
inner.innerMethod();
}
}
- 匿名内部クラス:名前のない内部クラスで、何らかのインターフェースの実装または何らかのクラスの継承を作成する匿名オブジェクトを作成するために使用される。通常、オブジェクトを作成するときにインターフェースの定義と実装またはクラスの継承を直接行う。
public class OuterClass {
public void outerMethod() {
Runnable runnable = new Runnable() {
@Override
public void run() {
// ...
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}