Getters și setere sunt utilizate pentru a vă proteja datele, în special atunci când creați clase.

Pentru fiecare variabilă de instanță, o metodă getter își returnează valoarea în timp ce o metodă setter setează sau actualizează valoarea acesteia. Având în vedere acest lucru, getters și seters sunt, de asemenea, cunoscuți ca accesorii și mutatori, respectiv.

Prin convenție, primitorii încep cu cuvântul „obține” și setează cu cuvântul „set”, urmat de un nume variabil. În ambele cazuri, prima literă a numelui variabilei este cu majusculă:

public class Vehicle {
  private String color;
  
  // Getter
  public String getColor() {
    return color;
  }
  
  // Setter
  public void setColor(String c) {
    this.color = c;
  }
}

Metoda getter returnează valoarea atributului. Metoda setter ia un parametru și îl atribuie atributului.

Odată ce getter-ul și setter-ul au fost definite, le folosim în principalul nostru:

public static void main(String[] args) {
  Vehicle v1 = new Vehicle();
  v1.setColor("Red");
  System.out.println(v1.getColor());
}

// Outputs "Red"

Getters și seters permit controlul asupra valorilor. Puteți valida valoarea dată în setter înainte de a seta efectiv valoarea.

De ce să folosiți getters și setere?

Getters și seters vă permit să controlați cât de importante sunt accesate și actualizate variabilele în codul dvs. De exemplu, luați în considerare această metodă de setare:

public void setNumber(int number) {
  if (number < 1 || number > 10) {
    throw new IllegalArgumentException();
  }
  this.number = num;
}

Prin utilizarea setNumber metoda, puteți fi sigur că valoarea number este întotdeauna între 1 și 10. Acest lucru este mult mai bun decât actualizarea fișierului number variabilă direct:

obj.number = 13;

Dacă actualizați number direct, este posibil să provocați efecte secundare neintenționate în altă parte a codului. Aici, setare number la 13 încalcă constrângerea de la 1 la 10 pe care dorim să o stabilim.

Făcând number o variabilă privată și folosind setNumber metoda ar împiedica acest lucru să se întâmple.

Pe de altă parte, singura modalitate de a citi valoarea lui number este folosind o metodă getter:

public int getNumber() {
  return this.number;
}