Apesar do nome relativamente esquisito o conceito é simples. Encapsulamento refere-se ao isolamento entre as partes do programa. Uma das principais formas de fazer isso é proibindo o acesso direto as variáveis de um objeto por objetos externos.
Para isso, utilizamos os modificadores de acesso existentes em java. Estes modificadores funcionam da seguinte forma:
- public: Qualquer objeto pode acessar o membro;
- default: Qualquer objeto do mesmo pacote pode acessar o membro e subclasses de outros pacotes;
- protected: O membro é acessível apenas por objetos do mesmo pacote;
- private: O membro é acessível apenas internamente (próprio objeto);
Exemplo:
class Conta { private double salario; private String nome; }
Um atributo privado só pode ser acessado ou alterado por código escrito dentro da classe na qual ele foi definido. Para acessá-los em outras partes do programa, utilizamos os métodos getters e setters.
A seguir, a classe AcessaConta mostra como é feito o acesso aos atributos do tipo private.
Normalmente, os métodos são public (publicos) e os atributos private (privados), isto ocorre pois nós desejamos que os atributos de um objeto só possam ser alterados por ele mesmo, desta forma nós inviabilizamos situações imprevistas.
- Getters: Método que retorna o atributo.
- Setters: Método que atribui/modifica o valor de um atributo.
Exemplo:
/* classe que demonstra o uso do get e set, como os atributos são do tipo * private, somente poderão ser acessados fora desta classe com o uso destes * métodos. */ class Conta { private double salario; private String nome; // Declarando os métodos Get e Set do atributo salario public double getSalario() { return salario; } public void setSalario(double salario) { this.salario = salario; } // Declarando os métodos Get e Set do atributo nome public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } }
A seguir, a classe AcessaConta mostra como é feito o acesso aos atributos do tipo private.
class AcessaConta { public static void main(String[] args) { Conta c = new Conta(); // Chama o método set dos atributos nome e salario e altera os seus valores c.setNome("Oberdan Martins"); c.setSalario(100); // Chama o método get dos atributos nome e salario e retorna os seus valores System.out.println(c.getNome()); System.out.println(c.getSalario()); } }
Normalmente, os métodos são public (publicos) e os atributos private (privados), isto ocorre pois nós desejamos que os atributos de um objeto só possam ser alterados por ele mesmo, desta forma nós inviabilizamos situações imprevistas.
Tem como encapsular um Método?
ResponderExcluir