MENU

【Java】getterとsetterを呼び出してみる

f:id:kiserukun:20210611090227p:plain

getterとsetterとは

getterもsetterもメソッドです。 フィールドは(多分ほとんどが)privateの修飾子になっていると思います。  

他の場所からアクセスされるのを防ぐためですね。
その為、他のクラスから呼び出したり(使ったり)する時にエラーが生じてきます。
 
そこで、他のクラスから呼び出す為にgetterメソッドとsetterメソッドを使用することになります。

書き方

getterメソッド

public フィールドの型 getフィールド名() {
    return this.フィールド名;
}

returnがついています

setterメソッド

public void setフィールド名(フィールドの型 任意の変数名) {
    this.フィールド名 = 任意の変数名;
}

voidがついています

呼び出して使ってみる

まずはgetterもsetterも書いていない状態です

class Main {
  public static void main(String[] args) {
   Car car = new Car();
   car.work();
  }
} 
class Car {
  Tanku tanku = new Tanku();
  public void work(){
    System.out.println(tanku.gas);
  }
}
public class Tanku {
 private int gas = 10;
}

 
Tankuクラスのgasを表示しようとしてもエラーが表示されます  
実行結果

>gas は Tanku でprivate アクセスされます

まずgetterを使い表示させます

・Mainクラスは上と同じ

class Car {
  Tanku tanku = new Tanku();
  public void work(){
    System.out.println(tanku.getGas());
  }
}
public class Tanku {
 private int gas = 10;

 public int getGas(){
   return this.gas;
 }
}

TankクラスにgetGasメソッドを作ります。
CarクラスでgetGasメソッドを実行し値を表示させます。  
実行結果

>10

表示できました  

setterを使い値を書き換える

・Mainクラスは上と同じ

class Car {
  Tanku tanku = new Tanku();
  public void work(){

    int addGas = 20;
    car.setGas(addGas);

    System.out.println(tanku.getGas());
  }
}
public class Tanku {
 private int gas = 10;
 
 public int getGas(){
   return this.gas;
 } 

 public void setGas(int gas){
   this.gas = gas;
 }
}

実行結果

>20

値を書き換えることができました  

値を足す

・Mainクラス、Carクラスは上と同じ setterのメソッド名をaddGasとします

public class Tanku {
 private int gas = 10;
 
 public int getGas(){
   return this.gas;
 } 

 public void addGas(int addGas){
   this.gas = gas + addGas;
 }
}

実行結果

>30

値を足すことができました!

あとがき

初めは定石という言葉に惑わされていましたが・・・
それでもメソッドなんですよね。  

getterは値を引っ張ってくるメソッド
setterは値を代入するメソッド

 
メソッドであることをちゃんと頭に入れていたいと思います。