logo

Accessor и Mutator в Java

В обектно-ориентираното програмиране капсулирането е фундаментална концепция, която се отнася до практиката за скриване на подробностите за изпълнение на обект и предоставяне на интерфейс за достъп до неговите свойства и поведение. Методите за достъп и мутатор са две важни концепции, свързани с капсулирането в Java.

Аксесоар

Методите за достъп, известни също като методи за получаване, са методи, които ви позволяват да извлечете стойността на частните променливи на обекта. Тези методи осигуряват достъп само за четене до състоянието на обекта. Като използвате методи за достъп, можете да гарантирате, че състоянието на обекта не се променя случайно или злонамерено от външен код.

Мутатор

Методите за мутация, известни също като методи за настройка, са методи, които ви позволяват да променяте стойността на частните променливи на обекта. Тези методи осигуряват достъп само за запис до състоянието на обекта. Чрез използването на мутаторни методи можете да гарантирате, че състоянието на обекта се променя само чрез контролиран интерфейс.

Нека да разгледаме пример, за да разберем концепцията за методите за достъп и мутатор в Java. Да предположим, че имаме клас, наречен Person, който има три частни променливи: име, възраст и имейл. Искаме да предоставим достъп до тези променливи, като използваме методи за достъп и мутация.

 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; } } 

В този пример сме дефинирали три метода за достъп: getName(), getAge() и getEmail() и три мутиращи метода: setName(), setAge() и setEmail(). Методите за достъп връщат стойността на съответната променлива на екземпляра, докато методите на мутатор задават стойността на съответната променлива на екземпляра.

Конвенция за именуване

Конвенцията за именуване на методите за достъп и мутатор е важна в Java. Методите за достъп трябва да се наименуват, започвайки с 'get', последвано от името на променливата, като първата буква е главна. Методите на мутатор трябва да се наименуват, започвайки с 'set', последвано от името на променливата, като първата буква е главна. Тази конвенция за именуване изяснява какво прави всеки метод и прави кода по-четлив и поддържаем.

Методите за достъп и мутация са съществена част от капсулирането в Java. Те ви позволяват да контролирате достъпа до състоянието на обект, като гарантирате, че той е достъпен и модифициран само чрез контролиран интерфейс. Като следваме конвенцията за именуване на методите за достъп и мутатор, можем да направим кода ви по-четлив и поддържаем.

ето една примерна програма, която демонстрира използването на методи за достъп и мутация в Java:

Лице.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()); } } 

Изход:

 Name: Manoj Age: 21 Email: [email protected] 

В този пример основният метод създава нов екземпляр на класа Person и използва мутиращите методи (setName, setAge и setEmail), за да зададе стойностите на частните променливи на обекта. След това методите за достъп (getName, getAge и getEmail) се използват за извличане на стойностите на променливите на екземпляра и показването им на конзолата.

Предимство от използването на Accessor и Mutator

Предимството на използването на методите за достъп и мутатор е, че те ни позволяват да добавим валидиране и друга логика на обработка към процеса на получаване и задаване на състояние на обект. Например можете да добавите проверка за валидиране към метода 'setAge(int age)', за да се уверите, че стойността на възрастта е в рамките на определен диапазон, или да добавите логика на форматиране към метода 'getName()', за да изведете главна първата буква от име на лицето.