I objektorienteret programmering er indkapsling et grundlæggende begreb, der refererer til praksis med at skjule implementeringsdetaljerne for et objekt og give en grænseflade til at få adgang til dets egenskaber og adfærd. Accessor- og mutatormetoder er to vigtige begreber relateret til indkapsling i Java.
Tilbehør
Accessor-metoder, også kendt som getter-metoder, er metoder, der giver dig mulighed for at hente værdien af et objekts private instansvariabler. Disse metoder giver skrivebeskyttet adgang til objektets tilstand. Ved at bruge accessor-metoder kan du sikre, at objektets tilstand ikke ændres ved et uheld eller ondsindet af ekstern kode.
Mutator
Mutatormetoder, også kendt som settermetoder, er metoder, der giver dig mulighed for at ændre værdien af et objekts private instansvariabler. Disse metoder giver kun skriveadgang til objektets tilstand. Ved at bruge mutatormetoder kan du sikre, at objektets tilstand kun ændres gennem en kontrolleret grænseflade.
Lad os tage et kig på et eksempel for at forstå konceptet med accessor- og mutatormetoder i Java. Antag, at vi har en klasse kaldet Person, der har tre private instansvariabler: navn, alder og e-mail. Vi ønsker at give adgang til disse variabler ved hjælp af accessor- og mutatormetoder.
public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
I dette eksempel har vi defineret tre accessor-metoder: getName(), getAge() og getEmail(), og tre mutatormetoder: setName(), setAge() og setEmail(). Accessor-metoderne returnerer værdien af den tilsvarende instansvariabel, mens mutatormetoderne angiver værdien af den tilsvarende instansvariabel.
Navnekonvention
Navnekonventionen for accessor- og mutatormetoder er vigtig i Java. Accessormetoder skal navngives begyndende med 'get' efterfulgt af navnet på variablen med det første bogstav med stort. Mutatormetoder skal navngives begyndende med 'sæt' efterfulgt af navnet på variablen med det første bogstav med stort. Denne navngivningskonvention gør det klart, hvad hver metode gør, og gør koden mere læsbar og vedligeholdelig.
Accessor- og mutatormetoder er en væsentlig del af indkapsling i Java. De giver dig mulighed for at kontrollere adgangen til et objekts tilstand og sikre, at det kun tilgås og ændres via en kontrolleret grænseflade. Ved at følge navnekonventionen for accessor- og mutatormetoder kan vi gøre din kode mere læsbar og vedligeholdelig.
her er et eksempelprogram, der demonstrerer brugen af accessor- og mutatormetoder i Java:
Person.java
import java.util.Scanner; public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Person person = new Person(); System.out.print('Enter name: '); String name = scanner.nextLine(); person.setName(name); System.out.print('Enter age: '); int age = scanner.nextInt(); person.setAge(age); scanner.nextLine(); // Consume the newline character left by nextInt() System.out.print('Enter email: '); String email = scanner.nextLine(); person.setEmail(email); System.out.println(' Name: ' + person.getName()); System.out.println('Age: ' + person.getAge()); System.out.println('Email: ' + person.getEmail()); } }
Produktion:
Name: Manoj Age: 21 Email: [email protected]
I dette eksempel opretter hovedmetoden en ny instans af klassen Person og bruger mutatormetoderne (setName, setAge og setEmail) til at indstille værdierne for objektets private instansvariabler. Derefter bruges accessor-metoderne (getName, getAge og getEmail) til at hente værdierne af instansvariablerne og vise dem på konsollen.
Fordel ved at bruge Accessor og Mutator
Fordelen ved at bruge accessor- og mutatormetoder er, at de giver os mulighed for at tilføje validering og anden behandlingslogik til processen med at hente og indstille et objekts tilstand. Du kan f.eks. tilføje en valideringskontrol til 'setAge(int age)'-metoden for at sikre, at aldersværdien er inden for et bestemt interval, eller tilføje formateringslogik til 'getName()'-metoden for at skrive det første bogstav i personens navn.