Fala pessoal !
Estou com uma dúvida sobre encapsulamento:
Veja o exemplo:
class teste01 {
private int atrib = 0; ---- propriedade privada
public void t1() {
System.out.println( atrib ) ;
}
public static void main( String args[] ) {
teste01 t = new teste01();
t.atrib = 10; ---- Não deveria causar erro ?
t.t1();
}
}
Não deveria dar um erro ? Afinal, atrib não é privado ?
Obrigado pela atenção
public static void main(String[] args) {
Pessoa p = new Pessoa();
p.setNome("Renan"); --funciona
p.nome = "Renan"; --erro, "The field Pessoa.nome is not visible"
}
É permitido ao usuário ver apenas os dados necessários, todo o resto é mantido escondido, através de especificadores de acesso (public, private, protected).
O modificador de acesso private e o mais restritivo de todos, variáveis, métodos e construtores com esse modificador são visíveis somente dentro da definição da própria classe, acessando-o diretamente ou através de uma instância da mesma classe.
O modificador de acesso protected define que variáveis, métodos e construtores com esse modificador podem somente ser acessados por classes no mesmo pacote ou subclasses da classe onde o elemento foi definido, é importante notar que para os elementos serem acessados na subclasse não é preciso estar no mesmo pacote da classe pai. O modificador protected pode ser aplicado somente em variáveis, métodos e construtores, o seu uso em classes não é permitido.
O mais abrangente de todos os tipos de acesso, o modificador public declara que elementos com esse modificador são acessíveis de qualquer classe Java. Este modificador é aplicável a variáveis, métodos, construtores e classes.