Encapsulamento
Autor: Dalua, eletrônica, informática, rock e nossos vídeos para o youtube!!! | Publicado: 2009-02-28T12:11:00-08:00

Encapsulamento e polimorfismo são dois temas que costumam embrulhar a nossa cabeça no início com java... Ai embaixo uma explicação básica sobre encapsulamento para quem quiser aprender! Bons estudos!Atributos com o modificador de acesso private só podem ser lidas pela classe que contém eles. Olhe no exemplo abaixo:<!-- [ -code- ] -->class Pessoa{      private String nome; //Somente a própria pessoa irá poder ler esse nome  }  class Pessoa{     private String nome; //Somente a própria pessoa irá poder ler esse nome } <!-- [/ -code- ] -->Isso quer dizer que se você instanciar a pessoa e tentar ler o nome diretamente, irá ser gerada uma exceção:<!-- [ -code- ] -->Pessoa maria = new Pessoa();  maria.nome= "Maria"; //Erro!!!  Pessoa maria = new Pessoa(); maria.nome= "Maria"; //Erro!!! <!-- [/ -code- ] -->Existem modificadores de acesso para permitir o acesso direto a variável livremente ou com alguma restrição, como public, protected...Pra que uso o private então?Com atributos privates temos que acessar as variáveis através de métodos públicos, que permitem que o "pessoal" de fora possa acessar a variável, seja para leitura ou escrita.E daí?Com acesso usando métodos podemos dar mais flexibilidade ao código, mais segurança no acesso. Exemplo simples e didático:Quero me certificar que a idade será sempre maior que 18 anos:class MaiorIdade{      private int idade;        public void setIdade(int pIdade){             if(idade < 18){ //nesse ponto poderíamos lançar um execessão também                    System.out.println("Idade menor do que o permitido...");             }else{                   this.idade = pIdade;             }      }  }  class MaiorIdade{     private int idade;      public void setIdade(int pIdade){            if(idade < idade =" pIdade;"><!-- [/ -code- ] -->Veja que se fossemos mexer diretamente na variável, isso seria uma dor de cabeça. Mas existem muitas vantagens que durante desenvolvimentos vamos aprendendo!Tá, mas e o tal do GET e SET?Esse são métodos padrões para definir o acesso as variáveis.GET: Do inglês adquirir, você lê o atributo através desse método!Exemplo:<!-- [ -code- ] -->view plainprint?int idade = pessoa.getIdade();  int idade = pessoa.getIdade(); <!-- [/ -code- ] -->O método GET deve ser definido para retornar o atributo na nossa classe:<!-- [ -code- ] -->view plainprint?class Pessoa{      private int idade;          public int getIdade(){             return this.idade;      }  }  class Pessoa{     private int idade;         public int getIdade(){            return this.idade;     } } <!-- [/ -code- ] -->SET: Do inglês configurar, atribuir, permiti você modificar um atributo de uma classe. COmo é um método, você deve receber o argumento para atribuir o valor<!-- [ -code- ] -->view plainprint?maria = new Pessoa();  maria.setNome("Maria"); //Observe que o valor foi entre os parênteses  maria = new Pessoa(); maria.setNome("Maria"); //Observe que o valor foi entre os parênteses <!-- [/ -code- ] -->Para definir o método você deve prever o recebimento do argumento:<!-- [ -code- ] -->view plainprint?class Pessoa{      private String nome;        public void setNome(String pNome){           this.nome = pNome;      }  }  class Pessoa{     private String nome;      public void setNome(String pNome){          this.nome = pNome;     } } <!-- [/ -code- ] -->_________________________________________Bem de forma resumida: Você usa métodos para acessar atributos não visiveis por outras classes. Esses métodos são chamados de GET e SET. GET para ler e SET para modificar o atributo.No eclipse é possível gerar os GET's e SET's automaticamente!! Crie a sua classe com os atributos privados e aperte sequencialmente ALT depois S e depois R e assim você ira escolher quais métodos gerar e para quais atributos!