Os modificadores de acesso: public e private, são os responsáveis pela visibilidade das classes, métodos e atributos. O modificador public (público) pode ser acessado por qualquer objeto e/ou classe presente no mesmo projeto. Enquanto que o modificador private (privado) somente pode ser acessado por objetos da mesma classe.

Uma aplicação escrita em Java é composta por diversos elementos, como os já mencionados atributos, métodos, classes, variáveis entre outros. Assim, tem-se que para acessar e/ou utilizar tais elementos são definidos regras de acesso.

Todavia, tais regras em orientação a objetos significam o fornecimento de três tipos de visibilidade – privada, protegida e pública. Sendo os modificadores mais utilizados em Java o public, protected, default (quando não há modificador definido) e private. Portanto, um modificador de acesso tem a finalidade de definir a extensão do acesso de um atributo, classe ou método.

MODIFICADOR PUBLIC

Ora, vamos entender de forma sintetizada o que significa cada uma dessas visibilidades. Assim sendo começaremos com o acesso de tipo público ou visibilidade public. Condição necessária para que uma classe, método ou construtor possam acessar outra classe, método ou atributos. Isto é, estamos falando de acesso em um pacote distinto do pacote de origem.

MODIFICADOR PRIVATE

O modificador private por sua vez, possui visibilidade restrita a própria classe. Esta regra determina que os atributos e métodos definidos com visibilidade privada somente poderão ser manipulados no local de sua definição. Ou seja, dentro da classe onde foram declarados.

Com efeito, a visibilidade protegida fica em algum lugar entre a visibilidade pública e privada. O modificador protected é acessível a própria classe, para as classes filhas e quem mais estiver no pacote.

ACESSANDO OS ATRIBUTOS DO OBJETO

Então temos o nosso objeto do tipo aluno o qual precisamos acessar seus atributos para que possamos proceder com a definição dos dados. Ou seja, para que possamos informar o nome do aluno, de seus pais, números do documento e informações da escola.

Aluno aluno01 = new Aluno();

Digite (aluno01.), após o ponto pressione a tecla [CTRL + BARRA DE ESPAÇO]. Após isso note que nenhum dos atributos do objeto são listados, ou seja, nenhum dos atributos estão visíveis mesmo para o método principal.

E por que isso acontece, por que mesmo estando na classe principal não temos acesso aos atributos da classe aluno? Porque por defaulf, quando não especificado o modificador de acesso, o Java atribui visibilidade privada ao atributo.

Para modificar o acesso vamos definir a visibilidade do atributo como public, assim ele será visível a todo o projeto. Entretanto, antes de modificar o tipo de acesso de todos os atributos, faça primeiro uma experiência. Modifique apenas o primeiro e depois tente acessá-lo no método main.

Uma vez que mudamos a visibilidade do atributo de private para public, observe que agora podemos acessá-lo, e a mesma regra vale para todos os atributos. Faça e veja você mesmo.

IMPRIMINDO NO CONSOLE

Oba! Então agora você sabe que para que um atributo possa ser acessado de qualquer ponto do projeto precisa ter visibilidade public. E que para acessar os atributos do objeto, a partir do método main basta digitar a variável mais um ponto ( . ).

Isto é, sempre iremos digitar o objeto mais o ponto. Dessa forma poderemos acessar tanto os atributos como o método do objeto em questão.

Resumindo, tendo digitado [aluno01.], com o auxílio da combinação das teclas mencionadas todos os atributos visíveis serão listados. Agora, a título de ilustração vamos primeiramente atribuir um nome para o primeiro objeto que criamos. Mas como poderemos passar o nome do aluno para o objeto aluno? Por meio do operador de atribuição como mostra o exemplo:

nome01.nome = "Alex";

Para imprimir utilizaremos o método print, System.out.println. E chamaremos a variável que faz referência ao objeto, “aluno01”. E seguindo o atributo que você deseja modificar e/ou atribuir um dado a ele.

System.out.println(“NOME DO ALUNO(A): ” +nome01.nome);

ERRO (NULLPOINTEREXCEPTION)

É comum entre os desenvolvedores, inicializar com o valor null um objeto que em dado momento não tem utilidade dentro de um projeto.

Aluno aluno01 = null;

Entretanto se nessas condições você tentar executar o programa, o console exibirá uma mensagem informando o erro, “java.lang.NullPointerException”. É interessante observar que a mensagem exibida mostra não apenas o tipo de erro. Mas mostrará também em que classe ele está e qual é a linha correspondente.

Se você optou por se tornar um programador, inevitavelmente em algum momento você irá se deparar com um NullPointerException. Este é o erro mais comum em Java, como em uma espécie de batismo, você precisa passar por ele. A boa notícia é que a partir de agora você saberá como resolvê-lo.

O NullPointerExcepetion acontecerá sempre que existir algum contexto nulo ou inexistente em seu projeto.

EM POUCAS PALAVRAS

No tutorial de hoje, aprendemos sobre os modificadores de acesso. Assim, pegamos o objeto Aluno e atribuímos um valor ao atributo nome. Acessando-o por meio da variável de referência o referido atributo. Entretanto, este procedimento somente foi possível após modificarmos a visibilidade dos atributos do padrão do Java private para public.

Mas esta não é a melhor forma de proceder no que se refere a maneira de acessar os atributos. No entanto, como método didático este é o melhor caminho a ser percorrido para você que está iniciando em programação. E principalmente para você que está começando em orientação a objetos, compreenda como funciona os modificadores de acesso.

Até porque as boas práticas em Java nos orientam a não acessar um atributo de forma direta.

Então caros desenvolvedores, espero que tenham compreendido como acessar um atributo do objeto. E mais, como passar um “parâmetro” a ele por meio da variável de referência. Porém agora, cientes de que o acesso direto fere as boas práticas.

Assim, importa-nos principalmente que você tenha compreendido a ideia por trás dos modificadores de acesso. E não perca o próximo tutorial, que é na verdade uma continuação deste, onde aprimoraremos alguns dos conceitos aprendidos aqui.