Java コンストラクターまたは Java のコンストラクターは、プログラム内で何かを構築するために使用される用語です。 Java のコンストラクターは、 特別な方法 オブジェクトを初期化するために使用されます。コンストラクターは、クラスのオブジェクトが作成されるときに呼び出されます。オブジェクト属性の初期値を設定するために使用できます。
Java のコンストラクターとは何ですか?
Java では、コンストラクターはメソッドに似たコードのブロックです。クラスのインスタンスが作成されるときに呼び出されます。コンストラクタの呼び出し時に、オブジェクト用のメモリがメモリに確保されます。これは、オブジェクトを初期化するために使用される特別なタイプのメソッドです。 new() キーワードを使用してオブジェクトが作成されるたびに、少なくとも 1 つのコンストラクターが呼び出されます。
Java replaceall文字列
Java コンストラクターの例
以下は Java コンストラクターの実装です。
ジャワ
// Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks { // Constructor Geeks() { super(); System.out.println('Constructor Called'); } // main function public static void main(String[] args) { Geeks geek = new Geeks(); } }> 出力
Constructor Called>
注記: クラスのコンストラクターを記述する必要はありません。これは、クラスに何もない場合、Java コンパイラーがデフォルトのコンストラクター (引数のないコンストラクター) を作成するためです。
Java コンストラクターと Java メソッドの違いは何ですか?
- コンストラクターは、コンストラクターが定義されているクラスと同じ名前を持つ必要がありますが、Java のメソッドではその必要はありません。
- メソッドが戻り値の型を持っている間、コンストラクターは型を返しません。 空所 if は値を返しません。
- コンストラクターはオブジェクトの作成時に 1 回だけ呼び出されますが、メソッドは何度でも呼び出すことができます。
次に、オブジェクトまたはインスタンスの作成時に呼び出されるコンストラクターの構文を考えてみましょう。
class Geek { ....... // A Constructor Geek() { } ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>コンストラクターの最初の行は、 super() または this() への呼び出し (スーパークラスのコンストラクターまたはオーバーロードされたコンストラクターへの呼び出し) です。コンストラクターに super への呼び出しを入力しない場合、コンパイラは、コードの最初の行で super への引数なしの呼び出しを提供します。オブジェクトを作成するには、スーパー コンストラクターを呼び出す必要があります。
自分のクラスがサブクラスではないと思っている場合、実際にはそのとおりです。Java のすべてのクラスはクラスのサブクラスです。 物体 クラス定義でオブジェクトを拡張すると言っていなくても。
Java におけるコンストラクターの必要性
ボックスを考えてみましょう。ボックス クラスについて話す場合、ボックス クラスにはいくつかのクラス変数 (長さ、幅、高さなど) があります。しかし、そのオブジェクトを作成するとき (つまり、ボックスがコンピューターのメモリに存在することになります)、その寸法の値が定義されていないボックスがそこに存在することができるでしょうか?答えはNです ○ 。
したがって、コンストラクターは、オブジェクトの作成時にクラス変数に値を割り当てるために使用されます。これは、プログラマーによって明示的に行われるか、Java 自体 (デフォルトのコンストラクター) によって行われます。
Java コンストラクターが呼び出されるとき?
を使用してオブジェクトが作成されるたびに、 新しい() キーワードを指定すると、少なくとも 1 つのコンストラクター (デフォルトのコンストラクターの可能性があります) が呼び出され、初期値がキーワードに割り当てられます。 データメンバー 同じクラスの。コンストラクターを記述するためのルールは次のとおりです。
- クラスのコンストラクターは、そのコンストラクターが存在するクラス名と同じ名前を持つ必要があります。
- Java のコンストラクターは、abstract、final、static、または Synchronized にすることはできません。
- アクセス修飾子をコンストラクター宣言で使用して、そのアクセス、つまり他のどのクラスがコンストラクターを呼び出すことができるかを制御できます。
ここまでで、オブジェクトの状態を初期化するためにコンストラクターが使用されることを学びました。のように メソッド 、コンストラクターには、オブジェクトの作成時に実行されるステートメント (つまり、命令) のコレクションも含まれています。
Java のコンストラクターの種類
コンストラクターの型について説明するのに適切な時期です。Java には主に次の 3 種類のコンストラクターがあります。
- デフォルトのコンストラクター
- パラメータ化されたコンストラクタ
- コピーコンストラクター
1. Java のデフォルトのコンストラクター
パラメーターを持たないコンストラクターは、デフォルトのコンストラクターと呼ばれます。デフォルトのコンストラクターは表示されません。また、引数なしでコンストラクターを作成した場合、コンパイラーはデフォルトのコンストラクターを作成しません。取り出してあります。これはオーバーロードされており、パラメーター化されたコンストラクターと呼ばれます。デフォルトのコンストラクターがパラメーター化されたコンストラクターに変更されました。ただし、パラメーター化されたコンストラクターはデフォルトのコンストラクターを変更できません。デフォルトのコンストラクターは、暗黙的または明示的にすることができます。明示的に定義しない場合は、暗黙的なデフォルトのコンストラクターを取得します。コンストラクターを手動で作成すると、暗黙的なコンストラクターはオーバーライドされます。
例:
ジャワ // Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG { // Default Constructor GFG() { System.out.println('Default constructor'); } // Driver function public static void main(String[] args) { GFG hello = new GFG(); } }> 出力
Default constructor>
注記: デフォルト コンストラクターは、型に応じて 0、null などのデフォルト値をオブジェクトに提供します。
2. Java のパラメータ化されたコンストラクター
パラメーターを持つコンストラクターは、パラメーター化されたコンストラクターとして知られています。クラスのフィールドを独自の値で初期化する場合は、パラメーター化されたコンストラクターを使用します。
例:
MBからGBへジャワ
// Java Program for Parameterized Constructor import java.io.*; class Geek { // data members of the class. String name; int id; Geek(String name, int id) { this.name = name; this.id = id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); } }> 出力
GeekName :Avinash and GeekId :68>
覚えておいてください: コンストラクターは値を返しますか?
コンストラクターには戻り値ステートメントはありませんが、コンストラクターは現在のクラス インスタンスを返します。コンストラクター内に「return」を書くことができます。
ここで最も重要なトピックは、コンストラクターのオーバーロードとして知られるコンストラクターと OOPS の強力な組み込みです。メソッドと同様に、さまざまな方法でオブジェクトを作成するためのコンストラクターをオーバーロードできます。コンパイラーは、パラメーターの数、パラメーターのタイプ、およびパラメーターの順序に基づいてコンストラクターを区別します。
例:
ジャワ // Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek { // constructor with one argument Geek(String name) { System.out.println('Constructor with one ' + 'argument - String : ' + name); } // constructor with two arguments Geek(String name, int age) { System.out.println( 'Constructor with two arguments : ' + ' String and Integer : ' + name + ' ' + age); } // Constructor with one argument but with different // type than previous.. Geek(long id) { System.out.println( 'Constructor with one argument : ' + 'Long : ' + id); } } class GFG { public static void main(String[] args) { // Creating the objects of the class named 'Geek' // by passing different arguments // Invoke the constructor with one argument of // type 'String'. Geek geek2 = new Geek('Shikhar'); // Invoke the constructor with two arguments Geek geek3 = new Geek('Dharmesh', 26); // Invoke the constructor with one argument of // type 'Long'. Geek geek4 = new Geek(325614567); } }> 出力
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>
3. Java でのコンストラクターのコピー
他のコンストラクターとは異なり、コピー コンストラクターは別のオブジェクトとともに渡され、渡されたオブジェクトから利用可能なデータを新しく作成されたオブジェクトにコピーします。
注記: Java では、C++ などの他のプログラミング言語のように利用できる組み込みのコピー コンストラクターはありません。代わりに、同じクラスのオブジェクトをクラスの他のインスタンス (オブジェクト) に渡すことによって独自のコピー コンストラクターを作成できます。
例:
ジャワ // Java Program for Copy Constructor import java.io.*; class Geek { // data members of the class. String name; int id; // Parameterized Constructor Geek(String name, int id) { this.name = name; this.id = id; } // Copy Constructor Geek(Geek obj2) { this.name = obj2.name; this.id = obj2.id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. System.out.println('First Object'); Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); System.out.println(); // This would invoke the copy constructor. Geek geek2 = new Geek(geek1); System.out.println( 'Copy Constructor used Second Object'); System.out.println('GeekName :' + geek2.name + ' and GeekId :' + geek2.id); } }> 出力
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>
コンストラクターについて詳しく知るために、次に示す 2 つの概念が広く使用されています。
- コンストラクターの連鎖
- コピーコンストラクター
Java コンストラクターに関する FAQ
1. Java のコンストラクターとは何ですか?
Java のコンストラクターは、 特別な方法 オブジェクトを初期化するために使用されます。
2. Java コンストラクターをプライベートにすることはできますか?
はい、コンストラクターはプライベートとして宣言できます。プライベート コンストラクターは、オブジェクトの作成を制限するために使用されます。