Pergunta

Possíveis duplicatas:
Membros de dados públicos vs Getters, Setters
Objetivo dos membros privados em uma classe

Qual é a utilidade de getters e setters quando você pode simplesmente tornar suas variáveis ​​públicas e evitar o incômodo de linhas como A.setVariableX(A.getVariableY())?

Foi útil?

Solução

Para ocultar detalhes de implementação.Se você optar por tornar suas propriedades públicas e, posteriormente, decidir alterar a maneira como elas funcionam, será necessário alterar todo o código associado.

Com getters e setters, muitas vezes você pode alterar os detalhes internos da implementação sem alterar a API visível (e assim evitar ter que alterar qualquer código que usa a API da classe em questão).

Outras dicas

Getters e setters podem fazer validação e instanciação lenta, enquanto membros públicos não podem.

Além disso, isso não é independente de linguagem, já que a maioria das linguagens que implementam propriedades abstraem a implementação para que pareçam membros públicos no código.

Porque às vezes há algumas restrições quanto ao que sua variável pode ser e ter que verificar isso ao defini-la faz sentido.

por exemplo, se sua Idade não puder ser -1, você deverá verificar isso em seu levantador.

if(value >= 0)
{
   _age = value;
}
else
{
  throw new InvalidAgeException("Age may not be less than 0");
}

Setters e getters se aplicam a propriedades, quaisquer que sejam as "propriedades" do seu código.

Por exemplo, você pode ter um angle variável, que armazena um valor de ângulo expresso em radianos.você pode então definir setters e getters para esta variável, com qualquer unidade angular que achar relevante.

Faz parte do princípio do encapsulamento.Você usa setters e getters como uma interface para interagir com seu objeto para que você possa - por exemplo - adicionar posteriormente qualquer funcionalidade (como validar dados de entrada) sem tocar no código que usa a(s) classe(s).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top