Javaではネストされたクラスと静的な内部クラスという2つの概念がありますが、これらは一体何が違うのでしょうか?

ネストされたクラス(Non-static Nested Class)

ネストされたクラスは、外部クラスのインスタンスに依存しています。つまり、ネストされたクラスのインスタンスを作成するには、外部クラスのインスタンスが既に存在している必要があります。ネストされたクラスは、外部クラスのメンバにアクセスできるため、外部クラスとの強い結びつきがあります。

public class OuterClass {
    // OuterClassのメンバ

    class NestedClass {
        // ネストされたクラスのメンバ
    }
}

静的な内部クラス(Static Nested Class)

静的な内部クラスは、外部クラスのインスタンスに依存せず、外部クラスとは独立して存在できます。静的な内部クラスは、外部クラスの非静的メンバにはアクセスできませんが、静的メンバにはアクセスできます。静的な内部クラスは、外部クラスがインスタンス化されていなくても、単独でインスタンス化できます。

public class OuterClass {
    // OuterClassのメンバ

    static class StaticNestedClass {
        // 静的な内部クラスのメンバ
    }
}

違いのまとめ

  1. ネストされたクラスは外部クラスのインスタンスに依存し、外部クラスの非静的メンバにアクセスできる。
  2. 静的な内部クラスは外部クラスのインスタンスに依存せず、外部クラスの非静的メンバにアクセスできないが、静的メンバにアクセスできる。

これらの違いを理解することで、適切な状況でどちらを使用するかを選択できるようになります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です