O encapsulamento protege o acesso direto (referência) aos atributos de uma instância fora da classe onde estes foram declarados. ... Encapsular atributos também auxilia a garantir que o estado e o comportamento de um objeto se mantenha coeso.
static nos garante que somente haverá uma, e não mais que uma, referência para determinada variável ou método disponível em mémoria. ... Declarar algo como static também permite você acessar as coisas diretamente, ou seja, sem precisar criar uma instância da classe.
Em programação orientada a objetos, modificador de acesso, também chamado de visão de método ou ainda visão de atributo, é a palavra-chave que define um atributo, método ou classe como público (ou public, qualquer classe pode ter acesso), privado (ou private, apenas os métodos da própria classe pode manipular o ...
Os modificadores de acesso são padrões de visibilidade de acessos a classes e membros de uma classe (atributos e métodos). Determinam se uma classe pode usar uma outra, invocando um determinado atributo ou um determinado método.
Encapsulamento vem de encapsular, que em programação orientada a objetos significa separar o programa em partes, o mais isolado possível. A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações. O Encapsulamento serve para controlar o acesso aos atributos e métodos de uma classe.
Os métodos static ou métodos da classe são funções que não dependem de nenhuma variável de instância, quando invocados executam uma função sem a dependência do conteúdo de um objeto ou a execução da instância de uma classe, conseguindo chamar direto qualquer método da classe e também manipulando alguns campos da classe ...
static é usado porque permite main() ser chamado sem precisar instanciar uma instância específica dessa classe. void indica que main() não retorna nenhum valor.
O modificador protected torna o membro acessível às classes do mesmo pacote ou através de herança, seus membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados.
public: permite acesso a qualquer código externo a classe. protected: permite acesso às classes filhas, mas proíbe a qualquer outro acesso externo. private: proíbe qualquer acesso externo à própria classe, inclusive das classes filhas.