Unul dintre modurile prin care putem implementa încapsularea datelor este prin utilizarea accesorilor și a mutatorilor. Rolul accesorilor și mutatorilor este de a reveni și de a seta valorile stării unui obiect. Să învățăm cum să programăm accesorii și mutatorii în Java. Ca exemplu, vom folosi o clasă Person cu statul și constructorul deja definiți:
O metodă de accesor este utilizată pentru a returna valoarea unui câmp privat. Urmează o schemă de denumire care prefixează cuvântul „get” la începutul numelui metodei. De exemplu, să adăugăm metode de accesoriu pentru nume, nume intermediar și prenume:
Aceste metode întorc întotdeauna același tip de date ca câmpul lor privat corespunzător (de exemplu, String) și apoi returnează pur și simplu valoarea acelui câmp privat.
Acum putem accesa valorile lor prin metodele unui obiect Persoana:
O metodă de mutare este utilizată pentru a stabili o valoare a unui câmp privat. Urmează o schemă de denumire care prefixează cuvântul „set” la începutul numelui metodei. De exemplu, să adăugăm câmpuri mutatoare pentru adresă și nume de utilizator:
Aceste metode nu au un tip de retur și acceptă un parametru care este același tip de date ca și câmpul lor privat corespunzător. Parametrul este apoi utilizat pentru a seta valoarea câmpului privat.
Acum este posibil să modificați valorile pentru adresa și numele de utilizator din interiorul obiectului Persoană:
Este ușor să ajungem la concluzia că putem schimba doar câmpurile private ale definiției clasei pentru a fi publice și pentru a obține aceleași rezultate. Este important să ne amintim că vrem să ascundem cât mai mult datele obiectului. Bufferul suplimentar oferit de aceste metode ne permite:
Să zicem că ne hotărâm să modificăm modul în care stocăm numele de mijloc. În loc de o singură șir, putem folosi acum o serie de șiruri:
Implementarea în interiorul obiectului s-a schimbat, dar lumea exterioară nu este afectată. Modul în care se numesc metodele rămâne exact același:
Sau, să zicem că aplicația care utilizează obiectul Persoară poate accepta doar numele de utilizator care au maximum zece caractere. Putem adăuga validare în mutatorul setUsername pentru a ne asigura că numele de utilizator se conformează acestei cerințe:
Acum, dacă numele de utilizator trecut la mutatorul setUsername este mai lung de zece caractere, acesta este trunchiat automat.