ホームページ >Java >&#&チュートリアル >Java の Void コンストラクターと非 Void コンストラクターの違いは何ですか?
Java では、コンストラクターはメソッドとは異なる独自の役割を果たします。これは初期化するクラスと同じ名前を共有しますが、戻り値の型がなく、オブジェクトの初期化のみを担当します。メソッドとは異なり、コンストラクターはメソッドのオーバーロードの原則に従いません。
この概念を説明するために、次のコード スニペットを考えてみましょう。
public class class1 { public static Integer value = 0; public class1() { da(); } public int da() { class1.value += 1; return 5; } public static void main(String[] args) { class1 h = new class1(); class1 h2 = new class1(); System.out.println(class1.value); } }
このスニペットでは、非 void コンストラクターが宣言されています。 。プログラムの出力は予想どおり 2 です。ただし、次の変更されたコードを考慮してください。
public class class1 { public static Integer value = 0; public void class1() { da(); } public int da() { class1.value += 1; return 5; } public static void main(String[] args) { class1 h = new class1(); class1 h2 = new class1(); System.out.println(class1.value); } }
この変更されたスニペットでは、コンストラクターが void として宣言されています。結果?出力は 0 になりました。この動作は、戻り値の型が void のコンストラクターを宣言すると、本質的にはコンストラクターではなく、通常のメソッドになるという事実に起因しています。したがって、オブジェクトの初期化を実行する機能はありません。
Java では、クラスは、それぞれ異なる引数 (パラメーター リスト) を持つ複数のコンストラクターを持つことができますが、引数を持たないコンストラクター (デフォルト コンストラクター) は 1 つだけです。 。クラスでコンストラクターが定義されていない場合、コンパイラーは引数のないデフォルトのコンストラクターを自動的に挿入します。
以上がJava の Void コンストラクターと非 Void コンストラクターの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。