Java コンストラクター
Java コンストラクター
このチュートリアルでは、Java コンストラクター、そのタイプ、および例を使用してそれらを使用する方法について学習します。
コンストラクタとは?
Java のコンストラクターは、クラスのオブジェクトが作成されるときに呼び出されるメソッドに似ています。
Java メソッドとは異なり、コンストラクターはクラスと同じ名前を持ち、戻り値の型はありません。たとえば、
class Test { Test() { // constructor body } }
ここで、Test()
コンストラクタです。クラスと同じ名前で、戻り値の型はありません。
推奨読書: コンストラクターが値を返さない理由
例 1:Java コンストラクター
class Main {
private String name;
// constructor
Main() {
System.out.println("Constructor Called:");
name = "Programiz";
}
public static void main(String[] args) {
// constructor is invoked while
// creating an object of the Main class
Main obj = new Main();
System.out.println("The name is " + obj.name);
}
}
出力 :
Constructor Called: The name is Programiz
上記の例では、Main()
という名前のコンストラクターを作成しました。 .コンストラクター内で、 name の値を初期化しています
Main のオブジェクトを作成するステートメントに注意してください クラス。
Main obj = new Main();
ここで、オブジェクトが作成されると、 Main()
コンストラクターが呼び出されます。そして、name の値 変数が初期化されます。
したがって、プログラムは name の値を出力します Programiz
の変数 .
コンストラクタの種類
Java では、コンストラクターは 3 つのタイプに分けることができます:
<オール>1. Java No-Arg コンストラクター
メソッドと同様に、Java コンストラクターにはパラメーター (引数) がある場合とない場合があります。
コンストラクターがパラメーターを受け入れない場合、それは引数のないコンストラクターとして知られています。たとえば、
private Constructor() {
// body of the constructor
}
例 2:Java プライベート引数なしコンストラクタ
class Main {
int i;
// constructor with no parameter
private Main() {
i = 5;
System.out.println("Constructor is called");
}
public static void main(String[] args) {
// calling the constructor without any parameter
Main obj = new Main();
System.out.println("Value of i: " + obj.i);
}
}
出力 :
Constructor is called Value of i: 5
上記の例では、コンストラクター Main()
を作成しました。 .ここで、コンストラクターはパラメーターを受け入れません。したがって、これは引数のないコンストラクターとして知られています。
コンストラクタをプライベートとして宣言したことに注意してください。
コンストラクターが宣言されたら private
、クラス外からはアクセスできません。そのため、プライベート コンストラクターを使用してクラス外からオブジェクトを作成することは禁止されています。
ここでは、同じクラス内にオブジェクトを作成しています。したがって、プログラムはコンストラクターにアクセスできます。詳細については、Java 実装プライベート コンストラクターを参照してください。
ただし、クラス外でオブジェクトを作成する場合は、コンストラクターを public
として宣言する必要があります。 .
例 3:Java public no-arg コンストラクタ
class Company {
String name;
// public constructor
public Company() {
name = "Programiz";
}
}
class Main {
public static void main(String[] args) {
// object is created in another class
Company obj = new Company();
System.out.println("Company name = " + obj.name);
}
}
出力 :
Company name = Programiz
推奨読書: Java アクセス修飾子
2. Java パラメータ化コンストラクタ
Java コンストラクターは、1 つ以上のパラメーターを受け入れることもできます。このようなコンストラクターは、パラメーター化されたコンストラクター (パラメーターを持つコンストラクター) として知られています。
例 4:パラメータ化されたコンストラクタ
class Main {
String languages;
// constructor accepting single value
Main(String lang) {
languages = lang;
System.out.println(languages + " Programming Language");
}
public static void main(String[] args) {
// call constructor by passing a single value
Main obj1 = new Main("Java");
Main obj2 = new Main("Python");
Main obj3 = new Main("C");
}
}
出力 :
Java Programming Language Python Programming Language C Programming Language
上記の例では、Main()
という名前のコンストラクターを作成しました。 .ここで、コンストラクターは 1 つのパラメーターを取ります。表現に注目してください、
Main obj1 = new Main("Java");
ここでは、単一の値をコンストラクターに渡しています。渡された引数に基づいて、コンストラクター内で言語変数が初期化されます。
3. Java デフォルト コンストラクタ
コンストラクターを作成しない場合、Java コンパイラーは、プログラムの実行中に引数なしのコンストラクターを自動的に作成します。このコンストラクターは、デフォルト コンストラクターと呼ばれます。
例 5:デフォルトのコンストラクター
class Main {
int a;
boolean b;
public static void main(String[] args) {
// A default constructor is called
Main obj = new Main();
System.out.println("Default Value:");
System.out.println("a = " + obj.a);
System.out.println("b = " + obj.b);
}
}
出力 :
a = 0 b = false
ここでは、コンストラクターを作成していません。したがって、Java コンパイラはデフォルトのコンストラクタを自動的に作成します。
デフォルト コンストラクターは、初期化されていないインスタンス変数をデフォルト値で初期化します。
タイプ | デフォルト値 |
---|---|
boolean | 偽 |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | \u0000 |
float | 0.0f |
double | 0.0d |
object | ヌル参照 |
上記のプログラムでは、変数 a と b デフォルト値 0 で初期化されます と false
上記のプログラムは以下と同等です:
class Main {
int a;
boolean b;
// a private constructor
private Main() {
a = 0;
b = false;
}
public static void main(String[] args) {
// call the constructor
Main obj = new Main();
System.out.println("Default Value:");
System.out.println("a = " + obj.a);
System.out.println("b = " + obj.b);
}
}
プログラムの出力は例 5 と同じです。
Java コンストラクタに関する重要事項
- オブジェクトをインスタンス化すると、コンストラクターが暗黙的に呼び出されます。
- コンストラクタを作成するための 2 つの規則は次のとおりです。
コンストラクターの名前は、クラスと同じにする必要があります。
Java コンストラクターには戻り値の型があってはなりません。 - クラスにコンストラクターがない場合、Java コンパイラーは デフォルトのコンストラクター を自動的に作成します ランタイム中。デフォルト コンストラクターは、インスタンス変数をデフォルト値で初期化します。たとえば、
int
変数は0
に初期化されます - コンストラクターの種類:
引数なしのコンストラクタ - 引数を受け取らないコンストラクター
パラメータ化されたコンストラクタ - 引数を受け取るコンストラクタ
デフォルト コンストラクタ - 明示的に定義されていない場合に Java コンパイラによって自動的に作成されるコンストラクタ - コンストラクタを
abstract
にすることはできません またはstatic
またはfinal
. - コンストラクタはオーバーロードできますが、オーバーライドすることはできません。
Java でのコンストラクターのオーバーロード
Java メソッドのオーバーロードと同様に、異なるパラメーターを持つ 2 つ以上のコンストラクターを作成することもできます。これは、コンストラクターのオーバーロードと呼ばれます。
例 6:Java コンストラクターのオーバーロード
class Main {
String language;
// constructor with no parameter
Main() {
this.language = "Java";
}
// constructor with a single parameter
Main(String language) {
this.language = language;
}
public void getName() {
System.out.println("Programming Langauage: " + this.language);
}
public static void main(String[] args) {
// call constructor with no parameter
Main obj1 = new Main();
// call constructor with a single parameter
Main obj2 = new Main("Python");
obj1.getName();
obj2.getName();
}
}
出力 :
Programming Language: Java Programming Language: Python
上記の例では、2 つのコンストラクターがあります:Main()
と Main(String language)
.ここでは、両方のコンストラクターが変数 language の値を異なる値で初期化します。
オブジェクトの作成中に渡されたパラメーターに基づいて、さまざまなコンストラクターが呼び出され、さまざまな値が割り当てられます。
あるコンストラクターを別のコンストラクターから呼び出すこともできます。詳細については、Java Call One Constructor from Another を参照してください。
注意 :this
を使用しました クラスの変数を指定するキーワード。 this
についてもっと知りたい キーワード、Java このキーワードにアクセスしてください。
Java