Getters e Setters em Java explicados

Getters e setters são usados ​​para proteger seus dados, principalmente ao criar classes.

Para cada variável de instância, um método getter retorna seu valor enquanto um método setter configura ou atualiza seu valor. Dado isso, getters e setters também são conhecidos como acessadores e mutadores , respectivamente.

Por convenção, getters começam com a palavra "get" e setters com a palavra "set", seguido por um nome de variável. Em ambos os casos, a primeira letra do nome da variável é maiúscula:

public class Vehicle { private String color; // Getter public String getColor() { return color; } // Setter public void setColor(String c) { this.color = c; } }

O método getter retorna o valor do atributo. O método setter pega um parâmetro e o atribui ao atributo.

Uma vez que getter e setter foram definidos, nós os usamos em nosso principal:

public static void main(String[] args) { Vehicle v1 = new Vehicle(); v1.setColor("Red"); System.out.println(v1.getColor()); } // Outputs "Red"

Getters e setters permitem o controle sobre os valores. Você pode validar o valor fornecido no configurador antes de definir o valor.

Por que usar getters e setters?

Getters e setters permitem que você controle como variáveis ​​importantes são acessadas e atualizadas em seu código. Por exemplo, considere este método setter:

public void setNumber(int number) { if (number  10) { throw new IllegalArgumentException(); } this.number = num; }

Ao usar o setNumbermétodo, você pode ter certeza de que o valor de numberestá sempre entre 1 e 10. Isso é muito melhor do que atualizar a numbervariável diretamente:

obj.number = 13;

Se você atualizar numberdiretamente, é possível que você cause efeitos colaterais indesejados em algum outro lugar do seu código. Aqui, definir numbercomo 13 viola a restrição de 1 a 10 que queremos estabelecer.

Criar numberuma variável privada e usar o setNumbermétodo evitaria que isso acontecesse.

Por outro lado, a única maneira de ler o valor de numberé usando um método getter:

public int getNumber() { return this.number; }