ホームページ >Java >&#&チュートリアル >Java 静的入れ子クラス
静的内部クラスはネストされたクラスです。このクラスは、外部クラスとして機能するクラスの下に静的メンバーとして存在します。メンバー関数や変数を使用するためにクラス オブジェクトを作成する必要はありません。外部クラスを使用してインスタンス化できます。また、非静的メンバー関数やメンバー変数には静的変数と同様にアクセスできないという制限があります。
構文:
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
JAVA 静的ネストクラスの構文を以下に示します。ここでは、内部クラスの傘クラスとして機能する外部クラスが必要です。内部クラスは外部クラスのループ内にあります。内部クラスは、静的内部クラスまたはネストされた静的クラスとして認識できるように、クラスの前に「static」キーワードを持ちます。
class outerclass { static class Innerclass { //Member variables //Member functions } }
JAVA の静的ネストされたクラスは、クラス定義時にクラスの前に「static」キーワードを使用して宣言されます。 static キーワードは、変数やメソッドがオーバーライドされることなく、プログラム全体でそのスコープを維持するために、メソッドや変数でも使用されます。同じ機能をクラス レベルで使用できますが、内部クラスである必要がある点が異なります。ネストされた静的クラスの機能は、次のセクションで説明する例を通じてよく理解できます。
JAVA の静的ネストされたクラスに関して注意すべき重要な点がいくつかあります。
確認できるように、いくつかの例とその説明を以下に示します。
これらの例は、プログラム処理中のデータ フローにおける静的キーワードの使用と理解を示しています。
コード:
public class Test1 { static int vnumber=25; static class Innerclass { void printmsg () { System.out.println ("We are running this proram to undertsand the implementation of static keyword under JAVA nested class. The value of number passed here is "+vnumber);} } public static void main(String args[] ) { Test1.Innerclass object=new Test1.Innerclass(); object.printmsg(); } }
出力:
説明: 静的クラスは直接インスタンス化されないため、この例では、静的クラスは外部クラスの助けを借りてインスタンス化されます。外部クラス「Test1」は、「vnumber」という名前の静的変数と「Innerclass」という名前の静的クラスで定義されています。 このメソッドは、「printmsg()」という名前の内部クラスで定義されます。この関数には、文字列と、外部クラスで定義された変数が含まれています。
プログラムが実行されると、最初に main 関数が呼び出されます。外部クラスは、ドット演算子を含む内部クラスとともにインスタンス化に使用されます。 「object」という名前のインスタンスが呼び出されます。次に、このオブジェクトを使用して関数 printmsg() を呼び出します。 printms() 関数は、その関数に格納されている文字列と、外部クラスの静的変数宣言からの値 25 の変数を取得します。そこで、クラスのインスタンス化メソッドを使用して、静的に入れ子になったクラスの使用法を示しました。ここで注意すべき点は、静的内部クラスと静的変数が使用されていますが、printmsg() 関数は非静的であるということです。これが、上記の例でインスタンス化した理由です。この関数が静的であれば、別の方法で使用したでしょう。
コード:
public class Test2 { static int vnumber=30; static class Innerclass { static void printmsg() { System.out.println("We are running this proram to undertsand the implementation of static keyword under JAVA nested class. The value of number passed here is : "+vnumber);} } public static void main(String args[]) { Test2.Innerclass.printmsg(); } }
出力:
説明: ここでは、変数、クラス、メソッドがすべて静的に定義されている静的な入れ子関数の例を示しています。これは、オブジェクトを呼び出してメソッドを呼び出すのではなく、メソッドを直接呼び出す方法を示すために行われます。 「static」キーワードを使用する場合はどこでもオブジェクトを作成する必要はありません。直接使用することもできます。ここでは、「test2」という名前の外部クラスが、「vnumber」という名前の静的変数と「innerclass」という名前の内部クラスを使用して作成されます。 Innerclass には、静的ネストされたクラスの使用法を示す static キーワードが付加されています。内部クラスには、文字列と変数を含む静的メンバー関数があります。
プログラムの実行時に main 関数が呼び出されます。外部クラス、内部クラス、メソッドはドット演算子を介して直接呼び出されます。ここでは、メソッド自体が静的として宣言されているため、前の例で作成したようなオブジェクトは作成しませんでした。
静的ネストされたクラスは、内部クラスでの外部関数のメンバー関数の使用を制限したい場合に役立ちます。これは、内部静的クラスが外部クラスの静的メンバーにのみアクセスできる一方で、外部クラスの他の非静的メンバーを内部クラスが使用したい場合はオブジェクトを作成する必要があるため、可能です。これは、プログラマがコードに継承されるセキュリティを探している場合に使用されます。 static キーワードを使用すると、データが簡単に操作されないようになります。これにより、アプリケーションのデータのセキュリティと信頼性が促進されます。
以上がJava 静的入れ子クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。