静的な内部クラス
静的な内部クラス:
1、全体クラス自体の外側に、静的内部クラスと呼ばれる修飾された内部静的クラスと、外部オブジェクト・クラスに属していません
図2に示すように、静的キーワードの役割は、関連するクラスのメンバーの代わりに、関連するインスタンスになるように修正されます
3、静的内部クラスは、静的メンバを含むことができ、非静的メンバを含んでいてもよいが、非静的内部クラス内の静的メンバを宣言することができません。
図4に示すように、内部の静的クラスのインスタンスメンバーがクラス外部アクセスできない、クラスのメンバーは唯一の方法は、静的な内部クラスの一例であっても、外部クラスのインスタンスメンバーにアクセスすることができない、外側のクラスにアクセスすることができ、唯一のクラスの外の静的メンバにアクセスすることができ
図5に示すように、外部の静的クラスは、クラスとして定義することができない、Javaの静的クラスが一つだけ、すなわち静的内部クラスであるた、トップクラスは、静的によって修正することができません
静的な内部クラスの外部クラスのプロパティとメソッドを呼び出す方法6、
1)外部非静的クラスは、内部の静的クラスのインスタンスを作成する方法でクラス内の静的プロパティおよびメソッドを呼び出すことができ
直接「外部タイプ内部クラス。プロパティ(方法)」メソッド呼び出しの静的プロパティおよびメソッド静的内部クラスを介して直接2)外部のクラス
静的な内部クラスのインスタンスを作成する方法7、
1)非クラス外部において:外部クラス名内の内部外部の名前クラスのクラス名name =新しいクラス名();.
2)外側のクラス:クラス名name =新しい内部内部クラス名();
コード例:
{クラスStaticDome01パブリック プライベートint型A = 10; //インスタンスメンバー プライベート静的INT B = 20; //クラスメンバー 静的クラスStaticClass { パブリックstatic int型= 30 C、 公共INT D = 40; //クラスのメソッド のパブリック静的ボイドプリント(){ //次のコードエラー、静的クラスは、クラスのインスタンス外部の内部メンバーにアクセスすることができない )を//System.out.println(a; //静的内部クラスのみのクラスの外部のメンバーにアクセスすることができる のSystem.out.println(「スタティック内部静的メソッドのクラス、外部部材クラスB「)、呼び出し のSystem.out.println(」アウタークラス=クラスメンバーB「+ B); } プライベートボイドSyso(){ // TODO自動生成方法スタブを } / /方法の例 公共ボイドprint01(){ //静的内部は外部の静的内部クラスと呼ばれるクラスのインスタンスメソッドに属し、インスタンスメソッド、静的な内部クラスを呼び出し、その中クラスのメソッド のSystem.out.println(「メソッド静的内部クラスのインスタンスは、静的な内部クラスを呼び出します方法「)の例としては、 StaticClass新しい新しいStaticClassのSC =(); sc.print(); } } }
テストカテゴリ:
クラスのテキスト{公共 のpublic static無効メイン(文字列[] args){ / * 外部:*インスタンスメンバの静的内部クラスにアクセスするには、インスタンスメンバーがインスタンスに属しているため、最初に、あなたが呼び出すことができ、オブジェクトのインスタンスを作成する必要がありますが、メソッドを作成しますクラス名。内部クラス名name =新しい新しい *クラス名外部。内部クラス名() *「外部クラスの内部クラス。プロパティ(メソッド)」は、直接静的内部クラスの静的プロパティおよびメソッドが呼び出される * / StaticDome01。 StaticClass ST =新しいStaticDome01.StaticClass(); たとえば内部の静的メソッド//アクセスクラス st.print01(); 例//クラス内の静的メンバにアクセス int型I = st.dを; System.out.printlnは(「なし外部静的な内部クラスDと呼ばれるクラスのメンバーの例=「+ I); クラスメンバー//アクセス静的な内部クラス ; int型J = StaticDome01.StaticClass.c クラスメンバーなし外部静的内部クラスと呼ばれるクラスのSystem.out.println(」 C =「+ J); クラスメソッドアクセス静的内部クラス// のSystem.out.println( "クラスメソッドアクセス静的内部クラス:")。 StaticDome01.StaticClass.print(); } }
結果:
静的な内部クラス:
1、全体クラス自体の外側に、静的内部クラスと呼ばれる修飾された内部静的クラスと、外部オブジェクト・クラスに属していません
図2に示すように、静的キーワードの役割は、関連するクラスのメンバーの代わりに、関連するインスタンスになるように修正されます
3、静的内部クラスは、静的メンバを含むことができ、非静的メンバを含んでいてもよいが、非静的内部クラス内の静的メンバを宣言することができません。
図4に示すように、内部の静的クラスのインスタンスメンバーがクラス外部アクセスできない、クラスのメンバーは唯一の方法は、静的な内部クラスの一例であっても、外部クラスのインスタンスメンバーにアクセスすることができない、外側のクラスにアクセスすることができ、唯一のクラスの外の静的メンバにアクセスすることができ
図5に示すように、外部の静的クラスは、クラスとして定義することができない、Javaの静的クラスが一つだけ、すなわち静的内部クラスであるた、トップクラスは、静的によって修正することができません
静的な内部クラスの外部クラスのプロパティとメソッドを呼び出す方法6、
1)外部非静的クラスは、内部の静的クラスのインスタンスを作成する方法でクラス内の静的プロパティおよびメソッドを呼び出すことができ
直接「外部タイプ内部クラス。プロパティ(方法)」メソッド呼び出しの静的プロパティおよびメソッド静的内部クラスを介して直接2)外部のクラス
静的な内部クラスのインスタンスを作成する方法7、
1)非クラス外部において:外部クラス名内の内部外部の名前クラスのクラス名name =新しいクラス名();.
2)外側のクラス:クラス名name =新しい内部内部クラス名();
コード例:
{クラスStaticDome01パブリック プライベートint型A = 10; //インスタンスメンバー プライベート静的INT B = 20; //クラスメンバー 静的クラスStaticClass { パブリックstatic int型= 30 C、 公共INT D = 40; //クラスのメソッド のパブリック静的ボイドプリント(){ //次のコードエラー、静的クラスは、クラスのインスタンス外部の内部メンバーにアクセスすることができない )を//System.out.println(a; //静的内部クラスのみのクラスの外部のメンバーにアクセスすることができる のSystem.out.println(「スタティック内部静的メソッドのクラス、外部部材クラスB「)、呼び出し のSystem.out.println(」アウタークラス=クラスメンバーB「+ B); } プライベートボイドSyso(){ // TODO自動生成方法スタブを } /方法の/例 公共ボイドprint01(){ //静的内部は外部の静的内部クラスと呼ばれるクラスのインスタンスメソッドに属し、インスタンスメソッド、静的な内部クラスを呼び出し、その中クラスのメソッド のSystem.out.println(「メソッド静的内部クラスのインスタンスは、静的な内部クラスを呼び出します方法「)の例としては、 StaticClass新しい新しいStaticClassのSC =(); sc.print(); } } }
テストカテゴリ:
クラスのテキスト{公共 のpublic static無効メイン(文字列[] args){ / * 外部:*インスタンスメンバの静的内部クラスにアクセスするには、インスタンスメンバーがインスタンスに属しているため、最初に、あなたが呼び出すことができ、オブジェクトのインスタンスを作成する必要がありますが、メソッドを作成しますクラス名。内部クラス名name =新しい新しい *クラス名外部。内部クラス名() *「外部クラスの内部クラス。プロパティ(メソッド)」は、直接静的内部クラスの静的プロパティおよびメソッドが呼び出される * / StaticDome01。 StaticClass ST =新しいStaticDome01.StaticClass(); たとえば内部の静的メソッド//アクセスクラス st.print01(); 例//クラス内の静的メンバにアクセス int型I = st.dを; System.out.printlnは(「なし外部静的な内部クラスDと呼ばれるクラスのメンバーの例=「+ I); クラスメンバー//アクセス静的な内部クラス ; int型J = StaticDome01.StaticClass.c クラスメンバーなし外部静的内部クラスと呼ばれるクラスのSystem.out.println(」 = C「+ J) クラスメソッドアクセス静的内部クラス// (「クラスメソッドアクセス静的内部クラス:「)のSystem.out.println; StaticDome01.StaticClass.print(); } }
結果: