ホームページ >Java >&#&チュートリアル >Java の Void コンストラクターと非 Void コンストラクターの違いは何ですか?

Java の Void コンストラクターと非 Void コンストラクターの違いは何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-09 07:33:06551ブラウズ

What's the Difference Between Void and Non-Void Constructors in Java?

Java の「void」および「non-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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。