Getters and Setters in Java Megmagyarázva

A getterek és a beállítók az adatok védelmére szolgálnak, különösen osztályok létrehozásakor.

Minden példányváltozó esetén a getter metódus visszaadja az értékét, míg a setter metódus beállítja vagy frissíti az értékét. Tekintettel erre, get és set metódusok is nevezik accessors és mutators , ill.

Megállapodás szerint a getterek a "get" szóval, a setters a "set" szóval kezdődnek, amelyet egy változó neve követ. Mindkét esetben a változó nevének első betűje nagybetűs:

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

A getter metódus visszaadja az attribútum értékét. A szetter módszer vesz egy paramétert és hozzárendeli az attribútumhoz.

Miután meghatároztuk a jelzőt és a beállítót, a fő részünkön használjuk:

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

A getterek és a beállítók lehetővé teszik az értékek ellenőrzését. Ellenőrizheti az adott értéket a szetterben, mielőtt ténylegesen beállítja az értéket.

Miért érdemes használni a mérőeszközöket?

A getterek és beállítók segítségével szabályozhatja, hogy a fontos változók miként érhetők el és frissüljenek a kódban. Fontolja meg például ezt a szetter módszert:

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

A setNumbermódszer használatával biztos lehet benne, hogy a értéke numbermindig 1 és 10 között van. Ez sokkal jobb, mint a numberváltozó közvetlen frissítése :

obj.number = 13;

Ha numberközvetlenül frissít , akkor előfordulhat, hogy nem kívánt mellékhatásokat okoz máshol a kódban. Itt numbera 13-ra állítás megsérti az 1-10 korlátozást, amelyet meg akarunk teremteni.

numberPrivát változó készítése és a setNumbermódszer használata megakadályozná ezt.

Másrészt az értékének egyetlen módja numbera getter módszer használata:

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