Java を理解するときに遭遇する基本的な概念の 1 つは、コンストラクターです。コンストラクターは、オブジェクトの作成および初期化方法において重要な役割を果たします。この投稿では、Java のコンストラクター、その重要性、さまざまな型、および実際の例を使用した使用法について明確に理解できるようになります。
また、オブジェクトの初期化やオブジェクトの作成をさまざまな方法で処理する際のコンストラクターの役割についても学習します。それでは、飛び込みましょう!
Java では、コンストラクターは、オブジェクトの作成時にオブジェクトを初期化するために使用されるコードのブロックです。これはオブジェクトの作成時に自動的に呼び出され、オブジェクトの初期状態が設定されます。クラス内でコンストラクターが明示的に定義されていない場合、Java は デフォルト コンストラクター.
を呼び出します。コンストラクターは、次の 2 つの重要な点で通常のメソッドと異なります。
コンストラクターは、新しいオブジェクトを一貫した方法で初期化するためのフレームワークを提供するため、不可欠です。これらにより、すべてのオブジェクトが有効で意味のあるデータから始まることが保証され、ライフサイクル全体にわたるオブジェクトの状態の管理が容易になります。
コンストラクターを理解すると、new キーワードを使用してオブジェクトが作成されるときにコンストラクターが自動的に呼び出されることが理解できるでしょう。
Java には主に 3 種類のコンストラクターがあります:
それぞれを詳しく見てみましょう。
引数なしのコンストラクターは、パラメーターを受け取らないコンストラクターです。デフォルト値またはコンストラクター内で定義された値を使用してオブジェクトを初期化します。
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 です。
ここでは、引数なしのコンストラクターは、Rectangle オブジェクトの作成時に長さと幅をデフォルト値で初期化します。
パラメータ化コンストラクターを使用すると、引数を渡してオブジェクトを特定の値で初期化できます。この柔軟性により、異なる初期状態を持つ複数のオブジェクトを作成できます。
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 です。
ここで、パラメータ化されたコンストラクターは引数として長さと幅を受け入れ、各オブジェクトにカスタム値を設定できるようにします。
クラスにコンストラクターが定義されていない場合、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 では、コンストラクターのオーバーロードが許可されており、クラスは異なる引数リストを持つ複数のコンストラクターを持つことができます。各コンストラクターは、渡されたパラメーターに基づいて固有のタスクを実行します。
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 は、オブジェクトの作成時に渡される引数の数とタイプに基づいてこれらを区別します。
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 のコンストラクターには利点があるにもかかわらず、いくつかの課題があります。
コンストラクターは Java プログラミングの基本的な部分です。これらは、オブジェクトが適切な値で初期化されることを保証し、オーバーロードによる柔軟性を提供します。引数なし、パラメータ化、デフォルトのいずれであっても、コンストラクタを効果的に使用する方法を理解することは、Java をマスターするために重要です。
あなたはどうですか?どのような種類のコンストラクターを使用するのが好きですか?
コメントであなたの考えやコードスニペットを共有してください!この記事が役立つと思われた場合は、❤️ を付けて、Java 関連のコンテンツをもっと見るために私をフォローしてください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3