こんにちは、kazuです。
本日はコンストラクタの使い方を備忘録としてまとめてみました。
コンストラクタとは
コンストラクタとは、クラスからインスタンスを作る時に実行される処理のことです。コンストラクタはコード上に記述をしていてもしていなくても必ず実行されます。
値を設定する際などに使います。
実務でよく出るワードの一つなので覚えてくださいね!
コンストラクタを実際に使ってみよう
では実際にコードを見てみよう!
public class Main {
public static void main(String[] args) {
//インスタンスの生成
Test test = new Test();
}
}
class Test {
String str = "testを実行しました";
//コンストラクタ
public Test(){
System.out.println(str);
}
}
// 実行結果
testを実行しました
こんな感じでコンストラクタを実行します。
これを見て「??」と言うかたいるかもしれません普通に呼び出すのと何が違うの?
と言うかもしれませんね。詳細に解説していきます。
インスタンス実行時とコンストラクタを確認する
上記サンプルを参考にして解説していきます。
ますメインに実行してあるインスタンスを見てみましょう!
Test test = new Test();
次にTestクラスに記載してあるコンストラクタを見てみましょう!
public Test(){
System.out.println(str);
}
はいお分かりですかね
一つ目の条件としてインスタンスの赤字とコンストラクタの赤字を同じ名前にしなければなりません。
インスタンスを書かないといけないのか?
結論から言うと不要になります。
ではインスタンスを記載していなくても特にエラーなく動きます
なぜならコンストラクタはインスタンス実行時呼び出されます!
「???」という感じですかね?どういうかと言いますと
上記コードで以下の記載がないのと他に何も記載しないと仮定します
public Test(){
System.out.println(str);
}
しかしコンストラクタなしで実行されるときは
public Test(){ }
上のような青字で書いた空のコンストラクタが実行されているのです。
なので、コード上記載されていても記載されていなくてもコンストラクタは実行されてはいるのです。
引数を設定する場合
次に引数を設定する場合のコードを見てみましょう
public class Main {
public static void main(String[] args) {
//インスタンスの生成
age age = new age(20);
}
}
class age {
//コンストラクタ
public age(int age){
System.out.println("Aさんの年齢は"+age+"歳です");
}
}
// 実行結果
Aさんの年齢は20歳です
コンストラクタに引数を設定することは可能です。
インスタンスを生成するときに括弧の中に引数を追加するだけです特に難しいことはしないです。
コンストラクタを実際に使ってみる
次にどのような感じで使っていくか簡単ですが、コード記載します
文字にすると、インスタンス生成時に数値を設定する使い方が多いかなと思います。
public class Main {
public static void main(String[] args) {
//インスタンスの生成
Car car = new Car(43, プリウス);
car.carExplain();
}
}
class Car {
private int gas;
private String carModel;
//コンストラクタ
public Car(int gas,string carModel){
int gas = gas;
String carModel = carModel;
}
public void carExplain(){
System.out.println("車種 : "+carModel);
System.out.println("ガソリン量 : "+gas+"L");
}
}
// 実行結果
車種 : プリウス
ガソリン量 : 43L
上記のように初期設定として使用されるかなと思います。
最後に
いかがでしたでしょうか?
コンストラクタと立派な命名はついていますが、
やっていることはシンプルですよね?
もしコンストラクタをしたらと言われたら初期設定と思えばいいのではないかなと思いました。
わかりやすく説明したつもりですが、もしわかりにくかったら聞いていただければなと、
最後までご覧いただきありがとうございました!