Eu não consigo entender na prática, a objetividade do Encapsulamento. Entendo que é uma padrão a ser seguido e tal, mas se eu não declarar as minhas variáveis de instâncias como private, não daria no mesmo? O código abaixo está funcionando. Eu o compreendi perfeitamente, mas veja que eu declarei a minha variável de instância nome como pública e as demais private. No main eu consigo normalmente chamar o cachorro. nome, já na idade, sou obrigado a setar na minha classe Animal e invocar o método setIdade no main. Beleza! Sendo que não entendo o motivo de ser assim, qual a praticidade disso? Talvez em projetos maiores, eu consiga entender.
public class Animal {
public String nome;
private String especie;
private int idade;
/* public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String especie() {
return especie;
}
public void setEspecie(String especie) {
this.especie = especie;
}
*/
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
/*
public void emitirBarulho() {
System.out.print("Barulho do animal");
}
public boolean ehMaior() {
return idade >= 1;
}
*/
}
Aqui o método principal:
public class Programa {
public static void main(String[] args) {
Animal cachorro = new Animal();
cachorro.nome = "Carlos";
cachorro.setIdade(2);
System.out.println("O meu animal se chama " + cachorro.nome + " e tem " + cachorro.getIdade() + " anos");
}
}