Använda accessorer och mutatorer i Java

Ett av sätten vi kan verkställa datakapsling är genom användning av accessorer och mutatorer. Tillträdares och mutatorers roll är att återvända och ställa in värdena för ett objekts tillstånd. Låt oss lära dig hur man programmerar accessorer och mutatorer i Java. Som exempel använder vi a Personklass med staten och konstruktören redan definierad:

Tillbehörsmetoder

En accessor metoden används för att returnera värdet på ett privat fält. Det följer ett namnschema som prefixerar ordet "get" till början av metodnamnet. Låt oss till exempel lägga till åtkomstmetoder för förnamn, mellannamn och efternamn:

Dessa metoder returnerar alltid samma datatyp som deras motsvarande privata fält (t.ex. sträng) och returnerar sedan helt enkelt värdet på det privata fältet.

Vi kan nu komma åt deras värden genom metoderna för ett Personobjekt:

Mutatormetoder

En mutatormetod används för att ställa in ett värde på ett privat fält. Det följer ett namnschema som prefixerar ordet "set" till början av metodnamnet. Låt oss till exempel lägga till mutatorfält för adress och användarnamn:

instagram viewer

Dessa metoder har inte en returtyp och accepterar en parameter som är samma datatyp som motsvarande privata fält. Parametern används sedan för att ställa in värdet på det privata fältet.

Det är nu möjligt att ändra värdena för adressen och användarnamnet i Personobjektet:

Varför använda accessorer och mutatorer?

Det är lätt att komma till slutsatsen att vi bara kan ändra de privata fälten i klassdefinitionen för att vara offentliga och uppnå samma resultat. Det är viktigt att komma ihåg att vi vill dölja objektets data så mycket som möjligt. Det extra buffert som tillhandahålls med dessa metoder låter oss:

  • Ändra hur data hanteras bakom kulisserna.
  • Sätt validering på värdena som fälten ställs in på.

Låt oss säga att vi beslutar att ändra hur vi lagrar mellannamn. Istället för bara en sträng kan vi nu använda en rad strängar:

Implementeringen inuti objektet har förändrats men omvärlden påverkas inte. Hur metoderna kallas förblir exakt samma:

Eller, låt oss säga att applikationen som använder Person-objektet bara kan acceptera användarnamn som har högst tio tecken. Vi kan lägga till validering i setUsername mutator för att se till att användarnamnet överensstämmer med detta krav:

Nu om användarnamnet som skickas till setUsername-mutatorn är längre än tio tecken, trunkeras det automatiskt.

instagram story viewer