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

DDD
リリース: 2024-10-01 06:27:02
オリジナル
597 人が閲覧しました

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 はコンストラクターに渡されるパラメーターを指します。

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

Constructor Method
Must have the same name as the class Can have any name
No return type (not even void) Must have a return type
Invoked automatically when an object is created Called explicitly by the programmer
Used to initialize objects Used to perform actions or computations
コンストラクター

メソッド

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

コンストラクターとの挑戦

  1. Java のコンストラクターには利点があるにもかかわらず、いくつかの課題があります。
  2. 値を返すことはできません: コンストラクターは何も返すことができないため、特定の状況では使用が制限される可能性があります。
継承なし

: コンストラクターは継承できないため、サブクラスで追加のコンストラクター定義が必要になる場合があります。

結論

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

あなたはどうですか?どのような種類のコンストラクターを使用することを好みますか?
コメントであなたの考えやコードスニペットを共有してください!この記事が役に立ったと思われた場合は、❤️ を付けて、Java 関連のコンテンツをさらにご覧ください!

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

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