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 + "人です");
}
}