Getters og Setters i Java forklaret

Getters og setters bruges til at beskytte dine data, især når du opretter klasser.

For hver forekomstvariabel returnerer en getter-metode sin værdi, mens en setter-metode indstiller eller opdaterer dens værdi. I betragtning af dette er getters og settere også kendt som henholdsvis accessorer og mutatorer .

Efter konvention begynder getters med ordet "get" og settere med ordet "set" efterfulgt af et variabelnavn. I begge tilfælde er det første bogstav i variabelens navn stort:

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

Getter-metoden returnerer værdien af ​​attributten. Setter-metoden tager en parameter og tildeler den til attributten.

Når getter og setter er blevet defineret, bruger vi det i vores hoved:

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

Getters og setters giver mulighed for kontrol over værdierne. Du kan validere den givne værdi i setteren, før du faktisk indstiller værdien.

Hvorfor bruge getters og setters?

Getters og setters giver dig mulighed for at kontrollere, hvor vigtige variabler der er adgang til og opdateret i din kode. Overvej for eksempel denne settermetode:

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

Ved at bruge setNumbermetoden kan du være sikker på, at værdien af numberaltid er mellem 1 og 10. Dette er meget bedre end at opdatere numbervariablen direkte:

obj.number = 13;

Hvis du opdaterer numberdirekte, er det muligt, at du vil forårsage utilsigtede bivirkninger et andet sted i din kode. Her numberbryder indstilling til 13 den 1 til 10 begrænsning, vi vil etablere.

At lave numberen privat variabel og bruge setNumbermetoden ville forhindre dette i at ske.

På den anden side er den eneste måde at læse værdien på numberved hjælp af en getter-metode:

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