通常の状況では、静的修正クラスを使用できません。 Staticを使用してクラスを変更する必要がある場合、Staticは通常、匿名の内部クラスを変更します。
メンバーインナークラスと呼ばれる1つのクラスで別のクラスを作成します。このメンバーの内部クラスは、静的(静的キーワード変更を使用)または非静的です。静的な内部クラスには、それらを定義および使用する際にさまざまな制限があるためです。そのため、実際の作業ではあまり使用されていません。
開発プロセス中、最も一般的な内部クラスは、非スタットメンバーである内部クラスで使用されます。ただし、特定の場合、静的な内部クラスも独自の役割を果たすことができます。
1。静的な内部クラスの使用の目的。
内部クラスを定義するときは、許可修飾子静的でプレフィックスを付けます。この時点で、この内部クラスは静的な内部クラスになります。ただし、使用制限やその他の要因などのさまざまな理由により(特定の使用制限については、以下のコンテンツで詳細に説明されています)、実際の作業では多くの使用はありません。しかし、それは価値がないという意味ではありません。いくつかの特別な場合、この静的な内部クラスを欠くことは本当に不可能です。たとえば、コードプログラムテストを実行する場合、各Javaソースファイルにメインメソッドが設定されている場合(メインメソッドは特定のアプリケーションの入り口であり、それを持っている必要があります)、多くの追加コードが表示されます。そして最も重要なことは、このメインプログラムのコードはJavaファイルのフォームであり、このメインメソッド自体を必要としないことです。しかし、この主な方法なしでは行うことは絶対に不可能です。この場合、主なメソッドは静的インナークラスに書き込むことができるため、各Javaソースファイルに同様のメインメソッドを設定する必要はありません。これは、コードテストに非常に役立ちます。中程度および大規模なアプリケーション開発では、一般的に使用される技術的手段です。このため、この静的な内部クラスはあまり一般的には使用されていませんが、プログラム開発者もそれを習得する必要があります。おそらく、ある程度の重要な瞬間に、それはまだ大きな役割を果たすことができます。
パブリッククラスmaininstaticClass {static class main {static void main(){//メインメソッドを静的インナークラスに書き込むため、各ソースファイルにこの種のメインメソッドを作成する必要はありません。 print(){system.out.println( "main in static inner class");}} public class testmain {public static void main(string [] args){// dodo auto-denerated method stub // new maininstaticclass()。2。静的な内部クラスの使用に関する制限。
内部クラスを静的クラスとして定義することは、基本的に他のクラスを静的クラスとして定義するのと同じであり、参照ルールは基本的に同じです。ただし、詳細はまだ非常に異なります。具体的には、主にすべてのプログラム開発者の注目を集めるための次の領域があります。
1つは、静的メンバー(静的変数と静的メンバーを含む)の定義です。一般的に言えば、内側のクラスが静的インナークラスとして定義されていない場合、メンバー変数またはメンバーメソッドを定義するときに静的メンバー変数および静的メンバーメソッドとして定義することはできません。つまり、静的メンバーは、非静的な内部クラスで宣言することはできません。たとえば、学生クラスでは、内部の階級年齢が定義されています。このクラスが静的キーワードで変更されていない場合、つまり静的クラスとして定義されていない場合、この内部クラスで特定のメンバーメソッドまたはメンバー変数を変更することは許可されていません。コンパイル時に合格することはできません。したがって、プログラム開発者は、静的クラスとして内部クラスを変更することによってのみ静的メンバー変数を変更し、このクラスでメンバーメソッドを定義できることに注意する必要があります。これは、静的インナークラスが持つ機能です。この理由は、この静的な内部クラスなしでは多くのタスクを完了できない場合があります。または、特定のユーザーのニーズを達成するために、大きな円を回る必要があります。これは、静的内部が存在する重要な理由でもあります。
第二に、メンバーの引用には比較的大きな制限があります。一般的な非静的な内部クラスは、外部クラスのメンバー変数とメンバーメソッドに自由にアクセスできます。これらのメンバー方法がプライベート(プライベートメンバー変数または方法)として変更されたとしても、それらの非静的な内部クラスに自由にアクセスできます。それは非静的な内部クラスの特権です。他のクラスでは、プライベートとして定義されたメンバー変数またはメソッドはアクセスできないからです。ただし、内部クラスが静的として定義されている場合、外側クラスのメンバーメソッドまたはメンバー変数を使用する場合、多くの制限があります。たとえば、外部クラスの非静的メンバー(メンバー変数やメンバーメソッドを含む)は、静的な内部クラスのオブジェクトからアクセスできません。これはどういう意味ですか?外部クラスで2つの変数が定義されている場合、1つは非静的変数であり、もう1つは静的変数です。次に、静的な内部クラスでは、メンバーメソッド内または他の場所であろうと、外側クラスの静的変数のみを参照することができ、非静的変数にアクセスできません。静的インナークラスでは、静的メソッドを定義できます(静的インナークラスで定義できます)、外部クラスのメンバーは静的メソッドで参照できます。ただし、内部クラスがどこに参照されていても、共通点が1つあります。つまり、外側クラスの静的メンバーメソッドまたはメンバー変数のみを参照できます。非静的なメンバー変数とメンバーメソッドの場合、静的な内部クラスではアクセスできません。これは、静的インナークラスの最大使用制限です。通常の非静的な内部クラスにはそのような制限はありません。静的な内部クラスは、特定の場合にのみ使用されるため、まさにこの理由です。そのアプリケーション範囲は、非静的な内部クラスの範囲よりもはるかに広範です。
第三に、静的インナークラスを作成する場合、静的インナークラスのインスタンスを外部クラスのインスタンスにバインドする必要はありません。
一般的に言えば、クラスでメンバー内部クラスを作成する場合、必須の規定があります。つまり、内部クラスのインスタンスは、外部クラスのインスタンスに拘束されなければなりません。つまり、内部クラスを作成する前に、最初に外側クラスの新しいキーワードを使用して、この内部クラスのオブジェクトを作成する必要があります。この場合、内側のクラスオブジェクトが外部クラスから初期化されている場合、内側のクラスオブジェクトは外側クラスオブジェクトにバインドされます。言い換えれば、通常の非静的な内部クラスのオブジェクトは、外部オブジェクトに添付されます。ただし、メンバー開発者が静的な内部クラスを作成する場合、それは別の問題です。一般的に言えば、プログラマーが静的な内部クラスを定義する場合、外部クラスのインスタンスを定義する必要はありません。つまり、外部クラスで静的インナークラスを定義するには、新しいキーワードを使用して内部クラスのインスタンスを作成する必要はありません。つまり、静的クラスの内部オブジェクトを作成する場合、外部クラスのオブジェクトは必要ありません。
newMainInStaticClass.Main();
特定の理由から、一般的にプログラム開発者はそれほど深く理解する必要はありません。彼らはこのルールがあることを覚えておく必要があります。静的な内部クラスを定義するときは、余分なお金を追加することを間違えないでください。
上記の分析から、静的な内部クラスは、非静的な内部クラスとは依然として非常に異なることがわかります。一般に、プログラム開発者は、非静的な内部クラスオブジェクトが、それを作成した外側クラスオブジェクトを指すように、外側クラスの参照を暗黙的に保存することを理解できます。この理解に関係なく、プログラム開発者は、静的な内部クラスと非静的な内部クラスの違いを念頭に置く必要があります。たとえば、静的メンバーのメソッドとメンバー変数を作成できるかどうか(静的インナークラスの代わりに静的メンバーを作成できます)、外部クラスのメンバーへのアクセスの制限(静的インナークラスの代わりに静的メンバー変数と外部クラスのメンバーメソッドのみにアクセスできます。これらの2つの違いは、静的な内部クラスと非静的な外側クラスの最大の違いであり、静的インナークラスが存在する理由でもあります。この違いを理解した後、プログラム開発者は、静的な内部クラスをどのような状況で使用すべきかを知る必要もあります。たとえば、プログラムテスト中に、各Javaソースファイルにメインメソッドコードの記述を避けるために、メインメソッドを静的な内部クラスに書き込み、記述されたコードの量を減らしてコードをより簡潔にすることができます。
要するに、静的インナークラスは、Java言語の非常に特別なクラスであり、通常の静的クラスや非静的な内部クラスとは大きく異なります。プログラム開発者として、それらの違いを知り、実際の仕事にいる適切なクラスを採用する必要があります。ただし、一般に、静的な内部クラスの頻度はそれほど高くありません。ただし、場合によっては、この内部の静的クラスが利用できない場合、結果の半分が2倍の努力で悪影響を与える可能性があります。
3。インスタンス
上記のコンテンツを読んだ後、私はそれを全体としてテストしました:
まず第一に、誰もが静的な内部クラスは外部クラスに依存しておらず、その内部の変数とメソッドが必ずしも静的ではないことを理解する必要があります。以下のコードについて話しましょう。
public class test {public static void main(string [] args){myinnerstaticclass inenter = new myinnerstaticclass(); inner.a = 10; inner.b = "abc"; system.out.println(inern.a+""+inner.b);}静的クラスmyinnerstaticclass {int a; string b;}}} public class test {public static void main(string [] args){myinnerstaticclass inenter = new myinnerstaticclass(); inner.a = 10; inner.b = "abc"; system.out.println(inern.a+""+inner.b);}静的クラスmyinnerstaticclass {int a; string b;}}}上記のコードでは、静的な匿名クラスを新しいものでインスタンス化します。実行後、10 ABCを入力してください。
要約します
上記は、この記事のJavaの静的クラスのすべての詳細な説明です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!