ホームページ  >  記事  >  Java  >  Javaの静的ネストクラスと非静的ネストクラスの主な違いは何ですか?

Javaの静的ネストクラスと非静的ネストクラスの主な違いは何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-09 22:41:02647ブラウズ

What are the Key Differences between Static and Non-Static Nested Classes in Java?

Java の静的ネスト クラスと非静的ネスト クラス

ネスト クラス (内部クラスとも呼ばれる) は、関連するクラスをグループ化する方法を提供します単一のソース ファイル内で。ただし、静的ネストされたクラスと非静的ネストされたクラスには重要な違いがあります。

静的ネストされたクラス

非静的ネストされたクラスとは異なり、静的ネストされたクラスにはアクセス権がありません。外側のクラスの非静的フィールドまたはメソッドに。これらは、外側のクラス内で static キーワードを使用して宣言されます。

public class OuterClass {

    private int x;

    public static class StaticNestedClass {

        public void doSomething() {
            // Cannot access 'x' as it is non-static
        }
    }
}

非静的ネスト クラス

非静的ネスト クラス (内部クラスとも呼ばれます) には、囲んでいるクラスの静的メンバーと非静的メンバーの両方にアクセスできます。これらは、非静的フィールドとメソッドに直接アクセスでき、また、OuterClass.staticMember 構文を使用して静的メンバーにアクセスできます。

public class OuterClass {

    private int x;

    public class NonStaticNestedClass {

        public void doSomething() {
            System.out.println(x);
        }
    }
}

主な違い

  • インスタンスの依存関係: 静的ネストされたクラスは、外側のクラスのインスタンスに依存しませんが、非静的ネストされたクラスは依存します。
  • 囲むクラスへのアクセス: 静的ネストされたクラスはアクセスできません
  • Creation: 静的ネストされたクラスは、外側のクラスのインスタンスを作成せずに作成できますが、非静的クラスは、外側のクラスのインスタンスを作成しなくても作成できます。ネストされたクラスは、それを囲むクラスのインスタンス内に作成する必要があります。

使用例

  • 静的なネストされたクラスは、ユーティリティ クラスやヘルパー クラスを定義するのに役立ちます。論理的には外側のクラスに関連していますが、インスタンス固有のデータへのアクセスは必要ありません。
  • 非静的ネストされたクラスは、外側のクラスと密接に対話し、そのクラスにアクセスする必要があるクラスの定義に適しています。内部状態。

以上がJavaの静的ネストクラスと非静的ネストクラスの主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。