Innan vi dyker in i detta koncept måste du vara medveten om klasser och inkapsling i Java .
Inkapsling i Java
Inkapsling, som namnet antyder, är processen att innesluta data och metoder som en enda enhet. I objektorienterad programmering görs datamedlemmarna i en klass privata för att begränsa direkt åtkomst till dem. Så de inkapslade datamedlemmarna kan inte hämtas eller ändras utan ett korrekt definierat sätt. För detta definierar vi accessor- och mutatormetoder i Java. Låt oss ta en titt på dessa metoder i detalj.Vad är accessorer och mutatorer i Java?
Tillbehör
Accessormetodens namn drivs av ordet " access " som tillåter användaren att komma åt den privata informationen i en klass. Om du någonsin har hört talas om " get "-metoden eller " getters ", är det samma sak som accessorer. Gettarna hämtar de privata variablerna och konstanterna för att komma åt utanför omfånget för en klass.Syntax
Vi använder nyckelordet " get " för Java-accessoarer. För att komma åt variabeln " name " kan vi använda följande getter getName() . För accessormetodens exempel, ta en titt på följande.public class Student {
private String name;
public String getName() {
return name;
}
}
Observera att varje getter har nyckelordet " get " före variabelnamnet i metodsignaturen och returtypen är densamma som den för variabeln som ska returneras. Eftersom variabeln " name " är av typen " String ", så returnerar getter/accessor-metoden också en " String ".
Mutatorer
Mutatormetoden i Java drivs av ordet "mutera", vilket bokstavligen betyder att modifiera. Mutatorer tillåter användare att ställa in/mutera värdet på privata variabler för ett klassobjekt. I det objektorienterade programmeringssammanhanget är " set "-metoden eller " sättare " också känd som mutatorer. Setters underlättar inkapsling eftersom privata datamedlemmar inte kan modifieras direkt. Så sättermetoder/mutatorer används för att uppdatera en variabels värde utanför klassomfånget.Syntax
För mutatorer använder vi nyckelordet " set ". Varje sättare definieras av nyckelordet "set" följt av namnet på variabeln som behöver muteras. Här använder vi settern setName() som tar en strängtypvariabel som en parameter.public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
Varför behöver vi accessorer och mutatorer?
Vi behöver getters och sättare eller accessorer och mutatorer för att skydda känslig information i en klass. Informationen är skyddad från olaglig användning genom att använda dessa standardmetoder. Dessutom kan datamängden i en mutator också valideras om den uppfyller alla krav i ett program.Exempel på accessorer och mutatorer
Genom att använda elevklassen nedan, låt oss titta på exemplen på accessor- och mutatormetoderna.Exempel
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()));
}
}
Produktion
Studentbiografi [ Innan du använder tillbehör och mutatorer ] Namn: null ID: null GPA: 0.0 DOB: null Kurser: null Studentbiografi [ Efter användning av mutatorer och tillbehör ] Namn: Alex Coy ID: 3115 GPA: 2.79 DOB: 1998-08-08 Kurser: [Objektorienterad programmering, kryptografi, fotografi, nätverkssäkerhet]