Obter e definir o método em Java
Operação
Os métodos getters e setters, ou métodos de "acesso", fornecem acesso às propriedades de um objeto. Um método get retorna o valor de uma propriedade de um objeto. Um método get possui um tipo de retorno relacionado ao tipo de variável de membro associado. Os métodos get normalmente não aceitam nenhum parâmetro. Um método set tem um tipo de retorno "void" e usa um parâmetro do tipo apropriado para atribuir à variável de membro associada.
Convenções
Os métodos de acesso são usados pelos objetos externos e, portanto, são declarados como métodos "públicos" (visíveis externamente). A convenção aceita é nomear get e definir métodos para a variável de membro associada (por exemplo, "getName" e "setName", associados à variável "name"), com o prefixo "get" ou "set". Nem todas as variáveis de membro podem ter métodos de acesso associados. Esses métodos são gravados apenas para os valores que devem ser acessados externamente.
Propósito
Restringir o acesso a variáveis de membro de um objeto faz parte de uma prática conhecida como "encapsulamento". O encapsulamento compartimenta os componentes de um objeto, ocultando a implementação (trabalho interno) do objeto que não precisa ser visível externamente e protege os dados internos de modificações sem permissão. Os métodos de acesso podem executar cálculos, validações ou outras ações que seriam evitadas, tornando as variáveis membro diretamente acessíveis.
Benefícios
A proteção de variável de membro que usa métodos de acesso permite que os programadores modifiquem facilmente o código interno sem alterar a forma como a classe é usada por outros. Isso evita a necessidade de fazer alterações de código por meio de um aplicativo quando uma classe é modificada. Os getters podem executar cálculos e ações necessários para produzir um valor, minimizando a quantidade de código externo necessária para usar o valor. Os setters podem realizar a validação e evitar erros causados por variáveis de membro que estabelecem valores inválidos.
Considerações
Adicionar métodos de acesso a uma classe deve ser feito de forma conservadora. Somente variáveis de membro que requerem acesso externo devem ter métodos de acesso. As propriedades que só precisam ser modificadas pela operação interna não precisam de setters. Propriedades que não têm relevância externa não devem ter getters. Essa prática minimiza a exposição da implementação de um objeto e protege as propriedades de modificações que poderiam introduzir erros de execução. Quanto menos métodos públicos houver, mais fácil será manter o código.