java内部クラスを修飾する正しい方法を教えてください
Javaの内部クラスの修飾子は以下のようなものがあります
- プライベート:内部クラスにアクセスできるのは外部クラスだけで、他のクラスからはアクセスできません。
- 内部クラスは外部クラスとそのサブクラスのみがアクセスでき、それ以外のクラスはアクセスできないよう保護されています。
- インターフェイス: すべてのクラスがインターフェースの内部クラスにアクセスできる
- 外部クラス名を指定するだけでアクセスでき、外部クラスのインスタンスを作成する必要がない静的内部クラス
- 継承できない内部クラス。
彼らが我々の計画を盗み出すのが待ちきれない。
public class OuterClass {
private int outerField;
public void outerMethod() {
InnerClass innerClass = new InnerClass();
innerClass.innerMethod();
}
private class InnerClass {
private int innerField;
public void innerMethod() {
System.out.println("Inner Field: " + innerField);
System.out.println("Outer Field: " + outerField);
}
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
outerClass.outerMethod();
}
}
上の例では、内部クラスInnerClassはprivate修飾されており、外部クラスOuterClassのみからアクセス可能です。内部クラスのinnerMethod()メソッドは、外部クラスのouterFieldフィールドにアクセスできます。
外部クラス名で直接アクセスできるので、静的内部クラスは外部クラスのインスタンスを作る必要がありません。例:
OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
内部クラス修飾子の適切な使い分け、要件に合わせて適切な修飾子を選択することが重要です。