Quando você manipula um atributo por meio de acessos modificaores, há regras bem importantes. Vamos lá!
Quando você usa um atributo em modo private, isso impede que esse mesmo atributo seja diretamente alterado em uma outra classe na qual ele está sendo usado. Vamos há um exemplo prático:
imagine que você tem um atributo em uma classe, e que esse atributo seja importante como por exemplo CPF:
public class Pessoa {
public String Cpf;
}
Agora imagine que você usa esse atributo em uma classe que executa o seu programa, que contém o método main
public class Testa{
public static void main(String [] args ){
Pessoa pessoa = new Pessoa();
pessoa.cpf = "112.545.698-78";
}
}
Veja que na classe Testa eu posso alterar o CPF direto, sem precisar implementar um Setter ou um getter por exemplo! Isso não é uma boa prática em orientação a objetos, muito pelo contrário é uma pessima ideia fazer isso! Por quê? É simples, porque qualquer um pode vim e alterar o seu CPF sem antes passar por uma regra padrão. E é justamente isso que o private faz, se você altera o
public String cpf; para private String cpf;
Automaticamente a linha: pessoa.cpf = "112.545.698-78";
para de compilar, porque não está mais visivel para outras classes, agora se você quiser manipular esse atributo antes ele terá que passar por alguma regra, por exemplo um setter ou um getter.
Entendido? Espero que sim!
Abraços e bons estudos.