Boa noite,
Irei tentar explicar com o seguinte exemplo:
Imagina que eu crie uma calculadora e te passe essa calculadora para você usar:
sintaxe fictícia
Calculadora {
public n1;
public n2;
public function somar(n1,n2) {
return n1+n2;
}
}
Agora quando você for acessar essa calculadora.
você consegue ver atributos que não deveriam ser vistos, que no caso são o n1 e o n2.
e com isso pode alterar atributos que não deveriam ser alterados.
Calculadora.n1 = 2; -> Pra que você iria querer alterar o n1?
Agora se você só deixar a função publica, quando você for acessar o objeto calculadora você só irá ter acesso ao somar.
Calculadora {
private n1;
private n2;
public function somar(n1,n2) {
return n1+n2;
}
}
Calculadora.somar(10,10)
Não sei se ficou claro, más essa é a melhor forma que eu consigo explicar.
É claro que existe casos e casos, nem sempre você irá querer deixar um atributo privado, mas isso geralmente é exceção.