logo

Akcesor i Mutator w Javie

W programowaniu obiektowym enkapsulacja jest podstawową koncepcją, która odnosi się do praktyki ukrywania szczegółów implementacji obiektu i zapewniania interfejsu umożliwiającego dostęp do jego właściwości i zachowań. Metody akcesorów i mutatorów to dwie ważne koncepcje związane z enkapsulacją w Javie.

Akcesor

Metody dostępu, zwane także metodami pobierającymi, to metody umożliwiające pobranie wartości prywatnych zmiennych instancji obiektu. Metody te zapewniają dostęp tylko do odczytu do stanu obiektu. Używając metod akcesorowych, możesz mieć pewność, że stan obiektu nie zostanie przypadkowo lub złośliwie zmodyfikowany przez kod zewnętrzny.

Mutator

Metody mutatorów, znane również jako metody ustawiające, to metody umożliwiające modyfikowanie wartości prywatnych zmiennych instancji obiektu. Metody te zapewniają dostęp tylko do zapisu do stanu obiektu. Używając metod mutatorów, możesz mieć pewność, że stan obiektu będzie modyfikowany tylko poprzez kontrolowany interfejs.

Przyjrzyjmy się przykładowi, aby zrozumieć koncepcję metod akcesorów i mutatorów w Javie. Załóżmy, że mamy klasę o nazwie Osoba, która ma trzy zmienne instancji prywatnej: imię i nazwisko, wiek i adres e-mail. Chcemy zapewnić dostęp do tych zmiennych za pomocą metod akcesorów i mutatorów.

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

W tym przykładzie zdefiniowaliśmy trzy metody akcesorowe: getName(), getAge() i getEmail() oraz trzy metody mutatorów: setName(), setAge() i setEmail(). Metody dostępu zwracają wartość odpowiedniej zmiennej instancji, podczas gdy metody mutatora ustawiają wartość odpowiedniej zmiennej instancji.

Konwencja nazewnictwa

Konwencja nazewnictwa metod akcesorów i mutatorów jest ważna w Javie. Nazwy metod akcesorów powinny zaczynać się od „get”, po którym następuje nazwa zmiennej i zaczynać się od dużej litery. Nazwy metod mutatorów powinny zaczynać się od „set”, po którym następuje nazwa zmiennej, zaczynając od dużej litery. Ta konwencja nazewnictwa wyjaśnia, co robi każda metoda, i sprawia, że ​​kod jest bardziej czytelny i łatwiejszy w utrzymaniu.

Metody akcesorów i mutatorów są istotną częścią enkapsulacji w Javie. Pozwalają kontrolować dostęp do stanu obiektu, zapewniając, że dostęp do niego i jego modyfikacja odbywa się wyłącznie poprzez kontrolowany interfejs. Przestrzegając konwencji nazewnictwa metod akcesorów i mutatorów, możemy sprawić, że Twój kod będzie bardziej czytelny i łatwiejszy w utrzymaniu.

oto przykładowy program demonstrujący użycie metod akcesorów i mutatorów w Javie:

Osoba.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()); } } 

Wyjście:

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

W tym przykładzie metoda main tworzy nową instancję klasy Person i wykorzystuje metody mutatora (setName, setAge i setEmail) do ustawiania wartości zmiennych instancji prywatnej obiektu. Następnie metody dostępu (getName, getAge i getEmail) służą do pobrania wartości zmiennych instancji i wyświetlenia ich na konsoli.

Zaleta korzystania z akcesora i mutatora

Zaletą korzystania z metod akcesorów i mutatorów jest to, że pozwalają nam dodać walidację i inną logikę przetwarzania do procesu uzyskiwania i ustawiania stanu obiektu. Na przykład możesz dodać kontrolę poprawności do metody „setAge(int age)”, aby upewnić się, że wartość wieku mieści się w określonym zakresie, lub dodać logikę formatowania do metody „getName()”, aby pierwsza litera imię osoby.