Java构造方法
构件的定义方法
①方法名称与类名完全相同
②方法声明中没有写明返回值(void也不可以)
定义了Hero类来描述刚出生时的动作。
public class Hero {
String name;
int hp;
public Hero() { //コントラストの定義
this.hp = 100; // hpフィールドを100で初期化
}
}
当新建的方法在刚刚创建后会自动执行的时候编写处理。
创建一个具有定义好的构造函数的英雄。
public class Main {
public static void main(String[] args) {
Hero h = new Hero(); //インスタン生成と同時にHPに100が代入されている
h.hp = 100; //いらない
System.out.println(h.hp); //100と表示される
}
}
在构造函数中接收参数作为附加信息。
public class Hero {
String name;
int hp;
public Hero(String name) { //引数として文字列を1つ受け取る
this.hp = 100; // hpフィールドを100で初期化
this.name = name; //引数の値でnameフィールドを初期化
}
}
使用new关键字传递参数
public class Main {
public static void main(String[] args) {
Hero h = new Hero("勇者"); //インスタン生成後、JVMによって自動的にコンストラクタが実行され、引数として"勇者"が利用される
System.out.println(h.hp); //100と表示される
System.out.println(h.name); //勇者と表示される
}
}
构造函数的重载
public class Hero {
String name;
int hp;
public Hero(String name) { //コンストラスタ①
this.name = name;
}
public Hero() { //コンストラクタ②
this.name = "勇者2" //"勇者2"を設定
}
}
使用重载了构造函数的类。
使用类已经重载了构造函数。
public class Main {
public static void main(String[] args) {
Hero h = new Hero("勇者"); //文字列引数があるのでコンストラスタ①が呼び出される
System.out.println(h.name); //勇者と表示される
Hero h2 = new Hero(); //引数がないのでコンストラクタ②が呼び出される
System.out.println(h2.name); //勇者2と表示される
}
}