まず、
パブリック クラスのテスト{ パブリック 静的 ボイドメイン(文字列[]引数){ FOO OBJ1 = 新しいはFoo(); } } クラスはFoo { int型の値。 公共のFoo(INT initValue){ 値 = initValue。 } }
エラーの原因は、彼らがこの方法を使用する必要がある場合は、関数を呼び出すパラメータを持つコンストラクタが定義されているので、関数がパラメータを定義していなかったのfoo()です。
II。
パブリック クラスInitializeBlockDemo { / ** * @paramの引数 * / パブリック 静的 ボイドメイン(文字列[]引数){ InitializeBlockClass OBJ = 新しいInitializeBlockClass(); System.out.println(obj.field)。 OBJ = 新しい InitializeBlockClass(300 )。 System.out.println(obj.field)。 } } クラスInitializeBlockClass { // 初期化ブロックの前と後の次の文、初期値のフィールドは、フィールドに影響します // 公共int型のフィールド= 100; { フィールド = 200 ; } 公共 int型のフィールド= 100 ; 公共 InitializeBlockClass(int型の値){ この選択図】図= 値。 } パブリックInitializeBlockClass(){ } }
静的初期化プログラムで表示される順序の初期化と施工方法で実行され、インスタンス化されていない場合は、静的初期化を実行し、割り当てられた彼の値に(新しい後)のインスタンスを生成します。
III。
クラスルート { 静的{ System.out.println(「ルート静的初期化ブロック」)。 } { System.out.println(「ルート通常の初期化ブロック」)。 } パブリックルート() { System.out.println(「引数なしでルートコンストラクタ」); } } クラスミッド拡張ルートを { 静的{ System.out.println(「ミッド静的初期化ブロック」)。 } { System.out.println(「ミッド一般的な初期化ブロック」)。 } パブリックミッド() { System.out.println(「引数なしでミッドコンストラクタ」); } パブリックミッド(文字列MSG) { // このことにより、同じクラスのコンストラクタのオーバーロードを呼び出して 、この(); するSystem.out.println(「のパラメータ値ミッドコンストラクタパラメータ:」+ MSG)。 } } クラスの葉は、拡張ミッドを { 静的{ System.out.println(「リーフ静的初期化ブロック」)。 } { System.out.println(「リーフ通常の初期化ブロック」)。 } 公共リーフ() { // スーパーで親クラスのコンストラクタを呼び出して文字列パラメータを持っている スーパー(「Javaのプレゼンテーション初期化シーケンスを」); System.out.println(「リーフは、コンストラクタを実行しました」)。 } } パブリック クラスTestStaticInitializeBlock { 公共の 静的な 無効メイン(文字列[] args)を { 新しいリーフ(); } }
実行される最初の静的初期化モジュールは、親クラスは、サブクラス静的初期化モジュールであり、次いで、親クラスは、通常、ノンパラメトリック、そこ引数コンストラクタを行う順番のサブクラスです。
第四に、クラスの静的メソッドでインスタンスメンバーにアクセス
パブリック クラスのテスト { INT X = 1 ; 静的 INT Y = 2 ; 公共 静的 ボイドメソッド()// 静的メソッド { System.out.println(「インスタンス変数= X」+ 新しい新しいテスト()X.); // アクセスクラスインスタンス変数は静的メソッドでインスタンス化クラスを保持する必要 のSystem.out.println(「静的変数Y = 「+ Y); //は静的メソッドで直接静的クラス変数にアクセスできる } パブリック 静的 ボイドメイン(文字列[]引数)を { 試験方法(); 試験T = 新しいテスト(); System.out.println( "x =" + TX)。 } }
第1のクラスの例は、静的メソッドへのパラメータとして使用するクラスのインスタンス変数を取得します
V.静的フィールドとクラスのコンストラクタ、クラスが作成されたオブジェクトの数を追跡することができます。これを照会するために、任意の時点でクラスを作成してください。「あなたは、オブジェクトの数を作成しています?。」
パブリック クラスのテスト{ プライベート 静的 int型のn = 0 。 パブリックテスト(){ N ++ ; } パブリック 静的 INT getNum(){ リターンN。 } パブリック 静的 ボイドメイン(文字列[]引数){ 試験T1 = 新しいテスト(); 試験T2 = 新しいテスト(); 試験T3 = 新しいテスト(); System.out.println( "オブジェクトの数が生成される:" + Test.getNum())。 } }