概要
Java学習メモ1 インスタンスの続きです。
間違いがあったら教えてください。
目次
- コンストラクタ
コンストラクタ
newでインスタンスを作成した後に、自動で呼び出される(自動で処理がされる?)特別なメソッドのこと
- クラス名と同じ名前にする
- 戻り値やvoidを書いてもいけない
この2つを守らなければなりません。」
new インスタンス名();でインスタンスを生成する際、()には引数を渡すことができます。
(インスタンスの生成とともに呼び出してくれるものだから、「newで生成した際に、コンストラクタに渡したい値をセッ」ト→「コンストラクタにその値を受け取る準備をする」)
そして、その引数はコンストラクタに受け渡すことができます。
Main.java
class Main {
public static void main(String[] args) {
Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0);
System.out.println(person1.firstName);
System.out.println(person1.lastName);
System.out.println(person1.age);
System.out.println(person1.height);
System.out.println(person1.weight);
}
}
Person.java
class Person {
public String firstName;
public String lastName;
public int age;
public double height;
public double weight;
//以下、コンストラクタPersonに、Main.javaで引数に設定した"Kate", "Jones", 27, 1.6, 50.0
//を受け取るためにString firstName, String lastName, int age, double height,
//double weightを記述する
Person(String firstName, String lastName, int age, double height, double weight){
//以下の記述を忘れない
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.height = height;
this.weight = weight;
}
}
インスタンスメソッドを作成
上記の記述に付け加えをしていきます。
Person.javaにfullNameメソッド、bmiメソッドを付け加えていきます。
その際、インスタンスメソッドの作成なので、「public データ型 インスタンス名」
Main.java
class Main {
public static void main(String[] args) {
Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0);
//以下、MainクラスでfullNameメソッドと、bmiメソッドの呼び出しをする
System.out.println(person1.fullName());
System.out.println(person1.age);
System.out.println(person1.bmi());
}
}
Person.java
class Person {
public String firstName;
public String lastName;
public int age;
public double height;
public double weight;
Person(String firstName, String lastName, int age, double height, double weight){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.height = height;
this.weight = weight;
}
//以下、fullNameメソッド内で、インスタンスフィールドのfirstName,lastNameを呼び出す。
//インスタンスメソッド内から、インスタンスフィールドを呼び出すのでthisをつける
public String fullName(){
return this.firstName + "" + this.lastName;
}
public double bmi(){
return this.weight / this.height / this.height;
}
}
他のインスタンスメソッドを呼び出す
インスタンスメソッドでインスタンスメソッドを呼び出します。
fullNameメソッドやbmiメソッドを呼び出せるprintDataメソッドをPersonクラスに記述します。
Main.java
class Main {
public static void main(String[] args) {
Person person1 = new Person("Kate", "Jones", 27, 1.6, 50.0);
person1.printData();
Person person2 = new Person("John", "Smith", 65, 1.75, 80.0);
person2.printData();
}
}
Person.java
class Person {
public String firstName;
public String lastName;
public int age;
public double height, weight;
Person(String firstName, String lastName, int age, double height, double weight) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.height = height;
this.weight = weight;
}
public String fullName() {
return this.firstName + " " + this.lastName;
}
public double bmi() {
return this.weight / this.height / this.height;
}
public void printData() {
//↑printDataメソッドには戻り値がないので、public void メソッド名にしている
//voidは戻り値がないという意味
System.out.println("私の名前は" + this.fullName() + "です");
System.out.println("年齢は" + this.age + "歳です");
System.out.println("BMIは" + Math.round(this.bmi()) + "です");
}
}