Pelo o que eu entendi, o modificador public permite qualquer classe e pacotes acessar o conteúdo de um atributo, método ou classe. Já o private permite somente a própria classe ter acesso a métodos, atributos e classe em si. E o protected permite os filhos da classe mãe e do mesmo pacote terem acessos aos métodos, atributos da classe mãe. E por último, o modificador default permite o acesso aos métodos, atributos somente dentro da própria classe. Estou correto?
Outra pergunta, eu vejo muitos programas Java usando o modificador private , ele seria o mais utilizado por motivos de boas práticas? ou depende muito do que o desenvolvedor quer fazer, ou seja, o contexto do programa?