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

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

Mary-Kate Olsen
リリース: 2024-12-05 13:13:14
オリジナル
712 人が閲覧しました

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

Java のコンストラクター: "Void" と "非 Void"

Java プログラミング言語では、クラスにコンストラクターを含めることができます。は、クラスのインスタンスの作成時に呼び出される特別なメソッドです。コンストラクターは、オブジェクトの状態を初期化するために機能します。コンストラクターには、「void」コンストラクターと「non-void」コンストラクターの 2 種類があります。

「Non-Void」コンストラクター

「non-void」コンストラクターvoid 以外の戻り値の型を宣言しています。言い換えれば、値 (通常はクラス自体のインスタンス) を返します。 「非 void」コンストラクターが呼び出されると、新しいオブジェクトが作成され、戻り値がコンストラクターを呼び出した参照変数に割り当てられます。

「Void」コンストラクター

一方、

「Void」コンストラクターは戻り値の型を宣言しません。代わりに、コンストラクター本体を実行してオブジェクトの状態を初期化するだけです。これらは値を返さないため、新しいオブジェクトの作成には使用できません。

コンストラクターの可視性の問題

Java では、コンストラクターには、コンストラクターと同じアクセス修飾子がありません。メソッド。コンストラクターの可視性は、クラス自体の可視性と一致する必要があります。たとえば、クラスが public として宣言されている場合、そのコンストラクターも public として宣言する必要があります。

例: コンストラクターの可視性への影響

次の 2 つのコード スニペットを考えてみましょう。

例 1: Return を含むコンストラクターType

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);
    }
}
ログイン後にコピー

例 2: Void 戻り値の型を持つコンストラクター

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);
    }
}
ログイン後にコピー

観察:

例 1 では、出力は 2 です。これは、コンストラクターがda() メソッド。値フィールドを 1 ずつインクリメントします。

ただし、例 2 では、出力は 0 です。これは、戻り値の型が void のコンストラクターが実際には da() メソッドを呼び出していないためです。代わりに、これはクラスと同じ名前のメソッドであり、コンストラクターとは異なります。

結論:

Java では、コンストラクターはメソッドではありません。これらはオブジェクトの状態を初期化するために使用され、戻り値の型はありません。 void 以外の戻り値の型でコンストラクターを宣言しようとすると、コンパイル エラーが発生します。

以上がJava コンストラクター: Void コンストラクターと非 Void コンストラクターの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート