hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.28. 15:29



Jelenlévő felhasználók

Jelenleg 520 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 519 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: [Java] Getterek és setterek
HozzászólásElküldve: 2018.03.10. 11:50 
Offline
Signore Senior
Avatar

Csatlakozott: 2011.09.09. 17:39
Hozzászólások: 4020
Megköszönt másnak: 12 alkalommal
Megköszönték neki: 139 alkalommal
Sziasztok!

Csak felfrissülésül, az előző leckében már volt egy Dog osztályunk, amit tudtunk az általunk írt konstruktor meghívásával példányosítani, majd azt is megnéztük, hogy a toString metódust hogyan lehet felülírni, hogy egy custom szöveget adjon vissza értékül.

Feltűnhetett azonban, hogy az osztály fieldjei alaphelyzetben (szándékosan így csináltam), private modifier-rel rendelkeznek. Ezeket mint már korábban megtanultuk, nem tudjuk kívülről elérni, tehát a Main classban nem tudjuk egyesével lekérdezni az objektumunk tulajdonságait.

Erre egy nagyon elterjedt módszert használunk, amiket gettereknek és settereknek hívunk. Alapjáraton a getter egy olyan metódus, mely úgy kezdődik, hogy get, majd a lekérdezendő field neve camel case-el. Paramétert nem vár el, alapesetben visszaadja a tulajdonságot.
Tehát:
Ha van egy private String color; property, akkor a getterünk neve getColor() lesz.

Kódbeli implementáció:

Kód:
public String getColor() {
   return color;
}


A setter pedig hasonlóképp épül fel, set-tel kezdődik, majd a tulajdonság neve. Paraméterül az új értéket várja el, a függvénytörzsben pedig a tulajdonságot beállítja az új értékre.

Pl.:

Kód:
public void setColor(final String color) {
   this.color = color;
}


Miért használjuk ezeket? Miért nem egyszerűbb public modifierrel ellátni a fieldeket? Meg lehet azt is csinálni persze, főleg könnyebb adatszerkezetű osztályoknál (pl. egy nagy restes alkalmazásnál egy DTO), azonban gondoljunk bele mennyi minden pluszt ad nekünk egy setter. Tegyük fel, hogy van egy olyan fieldünk, amelyik az illető életkorát tárolja el. Alapesetben ezt bármikor be lehet állítani 0-ra is, vagy akár minusz értékre. Viszont ha egy settert használunk, ami már egy függvény, akkor validálhatjuk a beállított értéket, így ha valaki 0-ra próbálja beállítani az életkorát, akkor akár jelezhetjük felé, hogy ezt próbálja újra, mert 0 éves ember nem lehet. Leegyszerűsítve, logikát tudunk csempészni az értékadásnál, valamint az érték kérésnél is.


Amennyiben te is Intellij IDEA-t használsz, van lehetőséget automatán legenerálni a getter / setter metódusokat, sőt, engedi is kiválasztani, hogy melyik fieldekhez akarsz generálni.

Ehhez kattints jobb klikkel a kódba, ahová generálni akarod őket, majd válaszd ki a Generate... pontot (Mac shortcut: OPTION + N), majd a Getters / setters pontot.

Ha mindent jól csináltál, felugrik egy ilyen ablak:

Kép

Itt kiválasztod a fieldeket, majd leokoézod az ablakot. Ha minden igaz, le lesznek generálva a getterek és setterek.

Nézzünk egy példát, ahol a Main osztályban egy létrehozott kutyának kiíratjuk a bundája színét:

Kód:
public class Main {

    public static void main(String[] args) {

        Dog enzo = new Dog("Enzo", 2, "szürke");
        System.out.println("A kutya bundájának színe: " + enzo.getColor());

    }
}


Eredmény: A kutya bundájának színe: szürke


Ennyit a getter / setterekről, következő leckében beszélünk az osztályok közötti öröklődésről.


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole