Uma classe com uma variável protected, tipo:
public class A {
private int number;
protected int id;
}
para essa classe estar bem encapsulada devem ser todas variáveis private ou com protected tudo bem também ??
valeuu
Uma classe com uma variável protected, tipo:
public class A {
private int number;
protected int id;
}
para essa classe estar bem encapsulada devem ser todas variáveis private ou com protected tudo bem também ??
valeuu
Depende da aplicação, de que forma essa variável será usada, qual a lógica envolvida, etc… No geral a recomendação é usar private e acessar apenas com os getters/setters, mas pode haver necessidade de um acesso direto nas classes filhas…
Então, é que isso era uma questão em um simulado que fiz, ai tava perguntando se protected variables quebram a encapsulation !
Existem diversas discussões inflamadas a esse respeito.
O certo é que são menos encapsuladas do que private e, se sua classe permitir extensão, podem comprometer seriamente o encapsulamento. Um usuário pode, por exemplo, criar um filho da sua classe e colocar setters em atributos que eram para ser read-only.
Eu concordo que a maioria dos atributos sejam privates, mas também concordo em usar getters and setters somente quando necessário. Atualmente vejo as pessoas criando getterns and setters para tudo, até para variáveis que só são lidas localmente.
Sinseramente queria entender o problema em usar metodos get e set.
Acredito que atributos devam ser private e possuir sempre metodos get e set.
Isso que é de fato um verdadeiro encapsulamento.
Temos que um sistema não pode ser feito pra hoje, e sim pra hoje e amanha. Se hoje não existe mau em acessar um atributo diretamente, amanha podemos ter que inserir algum tipo de validação. E mesmo que hoje só se acesse na mesma classe, podemos amanha querer acessar apartir de outra!! rsrs
E convenhamos… qual é a diferença entre fazer variavel; e getVariavel();
abs Victor Maia
Bem, no meu caso, eu só uso geters and seters quando vou precisar do atributo, caso o contrário, deixo como private uma vez que só a própria classe vai precisar destes, o mesmo acontece com os métodos. Somente o que é necessário é visto de fora. Isso ajuda muito no encapsulamento.