「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java のコンストラクターをマスターする: 型と例

Java のコンストラクターをマスターする: 型と例

2024 年 11 月 7 日に公開
ブラウズ:969

Mastering Constructors in Java: Types and Examples

Java を理解するときに遭遇する基本的な概念の 1 つは、コンストラクターです。コンストラクターは、オブジェクトの作成および初期化方法において重要な役割を果たします。この投稿では、Java のコンストラクター、その重要性、さまざまな型、および実際の例を使用した使用法について明確に理解できるようになります。

また、オブジェクトの初期化やオブジェクトの作成をさまざまな方法で処理する際のコンストラクターの役割についても学習します。それでは、飛び込みましょう!

Java のコンストラクターとは?

Java では、コンストラクターは、オブジェクトの作成時にオブジェクトを初期化するために使用されるコードのブロックです。これはオブジェクトの作成時に自動的に呼び出され、オブジェクトの初期状態が設定されます。クラス内でコンストラクターが明示的に定義されていない場合、Java は デフォルト コンストラクター.

を呼び出します。

コンストラクターは、次の 2 つの重要な点で通常のメソッドと異なります。

  1. クラスと同じ名前: コンストラクターは、それが属するクラスと同じ名前を持つ必要があります。
  2. 戻り値の型なし: コンストラクターは、void さえも含め、値を返しません。
  3. 自動的に呼び出されます: new キーワードを使用してオブジェクトが作成されるとコンストラクターが自動的に呼び出され、明示的に呼び出す必要がなくなります。

Java でコンストラクターが重要なのはなぜですか?

コンストラクターは、新しいオブジェクトを一貫した方法で初期化するためのフレームワークを提供するため、不可欠です。これらにより、すべてのオブジェクトが有効で意味のあるデータから始まることが保証され、ライフサイクル全体にわたるオブジェクトの状態の管理が容易になります。

コンストラクターを理解すると、new キーワードを使用してオブジェクトが作成されるときにコンストラクターが自動的に呼び出されることが理解できるでしょう。

Java のコンストラクターの種類

Java には主に 3 種類のコンストラクターがあります:

  • 引数なしのコンストラクター
  • パラメータ化されたコンストラクター
  • デフォルト コンストラクター

それぞれを詳しく見てみましょう。

1.引数なしのコンストラクター

引数なしのコンストラクターは、パラメーターを受け取らないコンストラクターです。デフォルト値またはコンストラクター内で定義された値を使用してオブジェクトを初期化します。

例:
class Rectangle {
    double length;
    double breadth;

    // No-argument constructor
    Rectangle() {
        length = 15.5;
        breadth = 10.67;
    }

    double calculateArea() {
        return length * breadth;
    }
}

class Main {
    public static void main(String[] args) {
        Rectangle myRectangle = new Rectangle();  // No-argument constructor is invoked
        double area = myRectangle.calculateArea();
        System.out.println("The area of the Rectangle: "   area);
    }
}

出力: 長方形の面積は 165.385 です。

ここでは、引数なしのコンストラクターは、R​​ectangle オブジェクトの作成時に長さと幅をデフォルト値で初期化します。

2.パラメータ化されたコンストラクタ

パラメータ化コンストラクターを使用すると、引数を渡してオブジェクトを特定の値で初期化できます。この柔軟性により、異なる初期状態を持つ複数のオブジェクトを作成できます。

例:
class Rectangle {
    double length;
    double breadth;

    // Parameterized constructor
    Rectangle(double l, double b) {
        length = l;
        breadth = b;
    }

    double calculateArea() {
        return length * breadth;
    }
}

class Main {
    public static void main(String[] args) {
        Rectangle myRectangle = new Rectangle(20, 30);  // Parameterized constructor is invoked
        double area = myRectangle.calculateArea();
        System.out.println("The area of the Rectangle: "   area);
    }
}

出力: 長方形の面積は 600.0 です。

ここで、パラメータ化されたコンストラクターは引数として長さと幅を受け入れ、各オブジェクトにカスタム値を設定できるようにします。

3.デフォルトのコンストラクタ

クラスにコンストラクターが定義されていない場合、Java は デフォルト コンストラクターを提供します。このコンストラクターは、インスタンス変数をデフォルト値 (オブジェクトの場合は null、数値の場合は 0 など) で初期化します。

例:
class Circle {
    double radius;

    double calculateArea() {
        return Math.PI * radius * radius;
    }
}

class Main {
    public static void main(String[] args) {
        Circle myCircle = new Circle();  // Default constructor is invoked
        System.out.println("Radius: "   myCircle.radius);  // Output will be 0.0, the default value
    }
}

Circle クラスは明示的にコンストラクターを定義していないため、Java は半径を 0.0 に初期化するデフォルトのコンストラクターを提供します。

Java でのコンストラクターのオーバーロード

Java では、コンストラクターのオーバーロードが許可されており、クラスは異なる引数リストを持つ複数のコンストラクターを持つことができます。各コンストラクターは、渡されたパラメーターに基づいて固有のタスクを実行します。

例:
class Student {
    String name;
    int age;

    // No-argument constructor
    Student() {
        name = "Unknown";
        age = 0;
    }

    // Parameterized constructor
    Student(String n, int a) {
        name = n;
        age = a;
    }

    void displayInfo() {
        System.out.println("Name: "   name   ", Age: "   age);
    }
}

class Main {
    public static void main(String[] args) {
        Student student1 = new Student();  // Calls no-argument constructor
        Student student2 = new Student("Alice", 20);  // Calls parameterized constructor

        student1.displayInfo();  // Output: Name: Unknown, Age: 0
        student2.displayInfo();  // Output: Name: Alice, Age: 20
    }
}

この場合、クラス Student には 2 つのコンストラクターがあります。1 つは引数を持たず、もう 1 つはパラメーター (名前と年齢) を持ちます。 Java は、オブジェクトの作成時に渡される引数の数とタイプに基づいてこれらを区別します。

コンストラクターの this キーワード

Java では、this キーワードはクラスの現在のインスタンスを参照するために使用されます。コンストラクターのパラメーターがインスタンス変数と同じ名前を持つ場合、曖昧さを避けるのに役立ちます。

例:
class Employee {
    String name;
    double salary;

    // Parameterized constructor
    Employee(String name, double salary) {
        this.name = name;  // 'this' refers to the current object's instance variable
        this.salary = salary;
    }

    void display() {
        System.out.println("Employee Name: "   name);
        System.out.println("Salary: "   salary);
    }
}

class Main {
    public static void main(String[] args) {
        Employee emp = new Employee("John", 50000);  // Using parameterized constructor
        emp.display();
    }
}

この例では、this.name はインスタンス変数を指しますが、this のない name はコンストラクターに渡されるパラメーターを指します。

コンストラクターとメソッド: 違いは何ですか?

コンストラクタ 方法
クラスと同じ名前にする必要があります 任意の名前を付けることができます
戻り値の型がありません (void さえありません) 戻り値の型が必要です
オブジェクトの作成時に自動的に呼び出されます プログラマによって明示的に呼び出される
オブジェクトの初期化に使用されます アクションまたは計算の実行に使用されます

コンストラクターとのチャレンジ

Java のコンストラクターには利点があるにもかかわらず、いくつかの課題があります。

  1. 値を返すことはできません: コンストラクターは何も返すことができないため、特定の状況では使用が制限される可能性があります。
  2. 継承なし: コンストラクターは継承できないため、サブクラスで追加のコンストラクター定義が必要になる場合があります。

結論

コンストラクターは Java プログラミングの基本的な部分です。これらは、オブジェクトが適切な値で初期化されることを保証し、オーバーロードによる柔軟性を提供します。引数なし、パラメータ化、デフォルトのいずれであっても、コンストラクタを効果的に使用する方法を理解することは、Java をマスターするために重要です。

あなたはどうですか?どのような種類のコンストラクターを使用するのが好きですか?

コメントであなたの考えやコードスニペットを共有してください!この記事が役立つと思われた場合は、❤️ を付けて、Java 関連のコンテンツをもっと見るために私をフォローしてください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/nenyasha/mastering-constructors-in-java-types-and-examples-11ne?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3