Java Language – Object Oriented Programing
Prerequisite
- クラスは必ずインスタンス化してから使う
- コンストラクタ(Constructor)はインスタンス化時に自動で実行される
- コンストラクタがないときは、デフォルトコンストラクタがJVMによってコンパイル時に追加される
- コンストラクタにはインスタンスの初期化のタイミングで設定したいものを定義する
- コンストラクタとして見なされる条件:
- メソッド名とクラス名が完全に等しいこと
- メソッド宣言に戻り値が記述されていないこと(voidも不可)
- 同名のコンストラクタを定義する
- 引数ありコンストラクタ
- 引数なしコンストラクタ
- this.name = "noName" のように変数に対して定義する
- this("name")のようにthisで引数ありを呼び出す
package JavaPackage;
public class JavaMethod {
public static void main(String[] args) {
// インスタンス化
Dog dog1 = new Dog("Kevin", "bulldog", 3);
Dog dog2 = new Dog("Kaito", "Shibaken", 2);
Dog dog0 = new Dog();
// メソッドの実行
dog1.sayIntroduction();
dog2.sayIntroduction();
dog0.sayIntroduction();
}
}
package JavaPackage;
public class Dog {
// attributes
public String breed;
public int age;
public String name;
// methods
public void sayBreed() {
System.out.println(this.breed);
}
public void sayAge() {
System.out.println(this.age);
}
public void sayIntroduction() {
System.out.println("I am " + this.name + ","
+ this.breed + " and age is " + this.age + ".");
}
/*
* Constructor - クラスがnewでインスタンスかされた場合に自動で実行される
* コンストラクタに引数を定義するとインスタンス化時に引数を設定する必要があるので
* 引数なしでもインスタンス化できるようにするためには、別のコンストラクタを書く
*/
public Dog(String name, String breed, int age) {
this.name = name;
this.breed = breed;
this.age = age;
}
/*
* 引数なしコンストラクタの書き方 其の一
*/
// public Dog() {
// this.name = "noName";
// this.breed = "Breed of Dog";
// this.age = 0;
// }
/*
* 引数なしコンストラクタの書き方 其の二
* this()で引数ありのコンストラクタを呼び出している
*//
public Dog() {
this("noName", "Breed of Dog", 0);
}
}