Zanim zagłębimy się w tę koncepcję, musisz być świadomy klas i enkapsulacji w Javie .
Hermetyzacja w Javie
Hermetyzacja, jak sama nazwa wskazuje, to proces zamykania danych i metod jako pojedynczej jednostki. W programowaniu zorientowanym obiektowo składowe danych klasy są prywatne, aby ograniczyć do nich bezpośredni dostęp. Tak więc hermetyzowane elementy danych nie mogą być pobierane ani modyfikowane bez odpowiednio zdefiniowanego sposobu. W tym celu definiujemy metody akcesorów i mutatorów w Javie. Przyjrzyjmy się szczegółowo tym metodom.Czym są akcesory i mutatory w Javie?
Akcesoria
Nazwa metody akcesora jest sterowana przez słowo „ dostęp ”, które umożliwia użytkownikowi dostęp do prywatnych informacji w klasie. Jeśli kiedykolwiek słyszałeś o metodzie „ get ” lub „ getterach ”, jest to to samo, co akcesorium. Moduły pobierające pobierają prywatne zmienne i stałe, aby uzyskać dostęp poza zakresem klasy.Składnia
Używamy słowa kluczowego „ get ” dla akcesorów Java. Aby uzyskać dostęp do zmiennej „ nazwa ”, możemy użyć następującego gettera getName() . Aby zapoznać się z przykładem metody akcesora, spójrz na poniższe.
public class Student {
private String name;
public String getName() {
return name;
}
}
Należy pamiętać, że każdy getter ma słowo kluczowe „ get ” przed nazwą zmiennej w sygnaturze metody, a typ zwracany jest taki sam, jak zwracana zmienna. Ponieważ zmienna „ name ” jest typu „ String ”, więc metoda gettera/akcesora również zwraca „ String ”.
Mutatory
Metoda mutator w Javie opiera się na słowie „mutowanie”, które dosłownie oznacza modyfikację. Mutatory pozwalają użytkownikom na ustawienie/mutację wartości prywatnych zmiennych obiektu klasy. W kontekście programowania obiektowego metoda „ set ” lub „ settery ” są również znane jako mutatory. Setery ułatwiają enkapsulację, ponieważ prywatnych członków danych nie można bezpośrednio modyfikować. Tak więc metody ustawiające/mutatory są używane do aktualizowania wartości zmiennej poza zakresem klasy.Składnia
W przypadku mutatorów używamy słowa kluczowego „ set ”. Każdy seter jest zdefiniowany przez słowo kluczowe „set”, po którym następuje nazwa zmiennej, która ma zostać zmutowana. Tutaj używamy metody ustawiającej setName() , która jako parametr przyjmuje zmienną typu String.
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
Dlaczego potrzebujemy akcesorów i mutatorów?
Potrzebujemy getterów i setterów lub akcesorów i mutatorów do ochrony poufnych informacji w klasie. Informacje są chronione przed nielegalnym wykorzystaniem przy użyciu tych standardowych metod. Co więcej, zbiór danych w mutatorze może być również walidowany, jeśli spełnia wszystkie wymagania programu.Przykłady akcesorów i mutatorów
Korzystając z poniższej klasy ucznia, przyjrzyjmy się przykładom metod akcesora i mutatora.Przykład
import java.util.Arrays;
public class Student {
private String name;
private Integer ID;
private String DOB;
private double GPA;
private String[] courses;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getID() {
return ID;
}
public void setID(Integer iD) {
this.ID = iD;
}
public String getDOB() {
return DOB;
}
public void setDOB(String dOB) {
this.DOB = dOB;
}
public double getGPA() {
return GPA;
}
public void setGPA(double gPA) {
this.GPA = gPA;
}
public String[] getCourses() {
return courses;
}
public void setCourses(String[] courses) {
this.courses = courses;
}
public static void main(String[] args) {
Student student1 = new Student();
System.out.println("Student Bio [ Before using Accessors & Mutators ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
// calling mutator methods
student1.setName("Alex Coy");
student1.setID(3115);
student1.setGPA(2.79);
student1.setDOB("08/08/1998");
String[] courses = { "Object Oriented Programming", "Cryptography", "Photography", "Network Security" };
student1.setCourses(courses);
System.out.println("\nStudent Bio [ After using Mutators & Accessors ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
}
}
Wyjście
Życiorys studenta [ Przed użyciem akcesoriów i mutatorów]
Imię i nazwisko: null ID: null GPA: 0.0 Data urodzenia: null Kursy: null
Życiorys studenta [ Po użyciu mutatorów i mutatorów]
Imię i nazwisko: Alex Coy ID: 3115 GPA: 2.79 Data urodzenia: 08/08/1998 Kursy: [Programowanie obiektowe, kryptografia, fotografia, bezpieczeństwo sieciowe]
GO TO FULL VERSION