Antes de mergulharmos nesse conceito, você precisa estar ciente das classes e do encapsulamento em Java .
Encapsulamento em Java
Encapsulamento, como o nome sugere, é o processo de incluir dados e métodos como uma única unidade. Na programação orientada a objetos , os membros de dados de uma classe são privados para restringir o acesso direto a eles. Portanto, os membros de dados encapsulados não podem ser recuperados ou modificados sem uma maneira bem definida. Para isso, definimos métodos acessadores e mutadores em Java. Vamos dar uma olhada nesses métodos em detalhes.O que são acessadores e mutadores em Java?
Acessadores
O nome do método acessador é orientado pela palavra “ acesso ” que permite ao usuário acessar as informações privadas em uma classe. Se você já ouviu falar do método “ get ” ou “ getters ”, é a mesma coisa que os acessadores. Os getters recuperam as variáveis e constantes privadas para acessar fora do escopo de uma classe.Sintaxe
Usamos a palavra-chave “ get ” para acessadores Java. Para acessar a variável “ name ” podemos usar o seguinte getter getName() . Para o exemplo do método de acesso, dê uma olhada no seguinte.public class Student {
private String name;
public String getName() {
return name;
}
}
Observe que cada getter possui a palavra-chave “ get ” antes do nome da variável na assinatura do método e o tipo de retorno é o mesmo da variável a ser retornada. Como a variável “ name ” é do tipo “ String ”, então o método getter/accessor também retorna um “ String ”.
Mutadores
O método mutator em Java é conduzido pela palavra “mutate”, que significa literalmente modificar. Mutadores permitem que os usuários definam/mutem o valor de variáveis privadas de um objeto de classe. No contexto da programação orientada a objetos, o método “ set ” ou “ setters ” também são conhecidos como mutadores. Os setters facilitam o encapsulamento, pois os membros de dados privados não podem ser modificados diretamente. Portanto, métodos setter/mutadores são usados para atualizar o valor de uma variável fora do escopo da classe.Sintaxe
Para mutadores, usamos a palavra-chave “ set ”. Cada setter é definido pela palavra-chave “set” seguida do nome da variável que precisa ser modificada. Aqui, usamos o setter setName() que recebe uma variável do tipo String como parâmetro.public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
Por que precisamos de acessadores e modificadores?
Precisamos de getters e setters ou acessadores e mutadores para proteger informações confidenciais em uma classe. As informações são protegidas contra uso ilegal usando esses métodos padrão. Além disso, o conjunto de dados em um modificador também pode ser validado se atender a todos os requisitos de um programa.Exemplos de acessador e modificador
Usando a classe de aluno abaixo, vamos ver os exemplos dos métodos acessadores e modificadores.Exemplo
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()));
}
}
Saída
Biografia do Aluno [ Antes de usar os Acessadores e Mutadores ] Nome: nulo ID: nulo GPA: 0.0 DOB: nulo Cursos: nulo Biografia do Aluno [ Depois de usar Mutadores e Acessadores ] Nome: Alex Coy ID: 3115 GPA: 2.79 DOB: 08/08/1998 Cursos: [Programação Orientada a Objetos, Criptografia, Fotografia, Segurança de Redes]