java セッター
フィールドのアクセス権をprivateにすると、当然フィールドの値をクラスの外から変更することもできなくなります。
そこで、フィールドの値を変更するメソッドを定義します。
このような、フィールドの値を変更するメソッドを特に「セッター」といいます。セッターは「setフィールド名」のように命名するのが一般的です。
何をprivateにし、何をpublicにするかというのは最初はよくわからないかもしれませんが、基本的なやり方があります。
最初のうちは、①フィールドはprivateに、②メソッドはpublicに、という2点沿っておけば、基本的に問題はありません。
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", "Christopher", "Smith", 65, 1.75, 80.0);
person2.printData();
System.out.println("----------------------");
// person1のmiddleNameフィールドの値を「Claire」にしてください
person1.setMiddleName("Claire");
System.out.println("ミドルネームを" + person1.getMiddleName() + "に変更しました");
person1.printData();
}
}
Person.java
---------
class Person {
private static int count = 0;
private String firstName;
private String middleName;
private String lastName;
private int age;
private double height;
private double weight;
Person(String firstName, String lastName, int age, double height, double weight) {
Person.count++;
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.height = height;
this.weight = weight;
}
Person(String firstName, String middleName, String lastName, int age, double height, double weight) {
this(firstName, lastName, age, height, weight);
this.middleName = middleName;
}
public String getMiddleName() {
return this.middleName;
}
// middleNameフィールドのセッターを定義してください
public void setMiddleName(String MiddleName) {
this.middleName = middleName;
}
public String fullName() {
if (this.middleName == null) {
return this.firstName + " " + this.lastName;
} else {
return this.firstName + " " + this.middleName + " " + this.lastName;
}
}
public void printData() {
System.out.println("私の名前は" + this.fullName() + "です");
System.out.println("年齢は" + this.age + "歳です");
System.out.println("BMIは" + Math.round(this.bmi()) + "です");
}
public double bmi() {
return this.weight / this.height / this.height;
}
public static void printCount() {
System.out.println("合計" + Person.count + "人です");
}
}