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と表示される
  }
}

广告
将在 10 秒后关闭
bannerAds