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 ett exempel använder vi en personklass med det redan definierade tillståndet och konstruktören:

Tillbehörsmetoder

En accessor-metod 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:

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. Den extra buffert som tillhandahålls med dessa metoder gör att vi kan:

  • Ä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.