Declaração e Controle de Acesso – Parte ll

 

Continuarei neste artigo abordando sobre controle de acesso e declarações, aqui citaremos os controles de acesso a métodos, variáveis locais, de instância e declarações de array e ENUM.

Preste muita atenção neste assunto, pois nada aqui pode passar despercebido, pois com certeza será cobrada de você na hora do exame.

 

Saiba que a linguagem Java possui quatro modificadores de acesso para membros de classe, lembrando que uma classe só pode usar dois, porém os membros podem usar todos.

  • public
  • protect
  • default
  • private

Membros public, significa que todas as outras classes independentes do pacote ao qual pertencem, podem acessar o objeto em questão

Membros protect e default funcionam da mesma forma abordada referente a classes, onde default pode ser acessado dentro do mesmo pacote e os membros protect pode ser acessado de pacotes diferentes em caso de herança.

Membros private não podem ser acessados por código em nenhuma outra classe que não aquela qual o membro foi declarado.

 

Mas em caso de variáveis locais, preste muita atenção, pois elas NÃO podem ter modificadores de acesso. Caso veja um código semelhante ao da Listagem 01, pode ter certeza que o compilador vai “gritar”.

 

package com.fabiano.acesso;

 

public class Carro {

      public static void main(String[] args) {

            private rodas = 4;

            System.out.println(rodas);

      }

}

Listagem 01

 

Modificadores Não Referentes a Acesso

Falamos sobre acesso a membros, no qual se refere ao código que tem permissão para invocar um método ou acessar uma variável de instância a partir de outra classe. Agora iremos tratar de modificadores que não interfere na visibilidade que o método ou variável de instancia possui, assim como falamos sobre os modificadores final e abstract que também se aplica a métodos.

 

Métodos Final => não pode ser sobrescrito. Mas lembre-se é válido estender uma classe não marcada como final, mas não podemos sobrescrever seus métodos final. Veja no código da Figura 01.

 

ffdcap2fig01.JPG 

Figura 01

 

Nesse código será lançado o seguinte erro:

java.lang.VerifyError: class com.fabiano.acesso.Fusca overrides final method velocimetro.()

As variáveis e argumentos marcados como final significa que seus valores não podem ser modificados.

 

Métodos abstract => o que você precisa prestar atenção é que métodos abstract não possui implementação em seus métodos, isso significa que eles devem ser implementados, ou seja, eles nem se quer tem chaves, ao invés disso ele terminam com ponto-e-vírgula. Em outras palavras, ela não tem um corpo de método.

Um método é marcado como abstract em uma classe para forçar que as subclasses não abstatc implementem o método em questão. Mas a classe que contiver ao menos um método abstratc ela deve ser marcada também como abstratic.

 

Métodos sybchronized => esses métodos só podem ser acessados por uma thread de cada vez. Iremos abordar esse tipo de método no assunto referente a Thread, o que você precisa saber que esses métodos podem ter qualquer um dos quatros modificadores de acesso.

 

Métodos nativos => o que você precisa saber sobre esse tipo de modificador é que ele só pode ser aplicado a métodos e que o corpo do seu método deve ser ponto-e-vírgula.

 

Métodos strictfp => esse modificador pode ser usado tanto para métodos como em classes, mas nunca deve ser usado em variáveis, você não precisa saber exatamente como ele funciona, mas ele força os pontos flutuantes a aderirem o padrão IEEE 754.

 

Agora tratando um pouco de variáveis, sendo elas locais, de referencias e de instancias elas também possui uma regra de declarações.

 

Para variáveis do tipo primitivo você precisa saber que todos devem ser assinalados,não precisará saber calcular os intervalos, mas precisa entender a seqüência é do menor para o maior; byte, short, int, long, float e double.

 

Variáveis de instancia são definidas no corpo da classe, e são inicializadas quando a classe é instanciada. Elas podem receber qualquer um dos três modificadores de acesso, portanto pode possui qualquer dos quatros níveis de acesso. Podem ser marcadas como final e transient, mas não podem ser marcadas como abstract, sinchronized, strictfp, native e static.

 

Variáveis locais são aquelas declaradas dentro de um método, ou seja, o tempo de vida de uma variável local é o tempo em que o método está em execução. Um detalhe importante que você precisa saber é que variáveis locais precisam ser inicializadas com um valor antes de ser usada.

 

Uma coisa que será testada em você é o acompanhamento de um fluxo quando se trata de variáveis locais, com certeza eles usarão variáveis locais com o mesmo nome de uma variável de instancia então fique esperto. Veja na Figura 02

 

ffdcap2fig02.JPG 

Figura 02

 

Procure entender o resultado deste código.

 

Variáveis final impossibilita a reutilização desta variável depois que ela ter sido inicializada com valor explícito. Para primitivos, isso significa que o valor não pode ser alterado, tratando-se de variável de referencia ela não pode ser retribuída a um objeto diferente.

 

Variáveis transient significa que você estar informado a JVM para ignorar esta variável quando você for serializar o objeto que a contém. Veremos isso com mais detalhes quando falaremos de serialização.

 

Variáveis volatile o que ela significa você não precisa saber para o exame, mas o que você deve saber é que ela se aplica somente a variáveis de instancia.

 

Variáveis e métodos static são usados para criar variáveis e métodos que irão existir independente da instancia da classe. O que você pode marcar como static são métodos, variáveis, bloco de inicialização e classes aninhadas. Você não pode marcar como static: construtores, classes (a não ser  que estejam aninhadas), métodos de classes internas e variáveis locais e de instância.

 

Declarando ENUM

Um ENUM especifica uma lista de valores constante que podem ser atribuídos a um determinado tipo. ENUM é do próprio tipo ENUM do tipo constante de um ENUM.

ENUM pode ser declarado fora ou dentro de uma classe, mas NÃO em um método.

Eles podem conter construtores, métodos, variáveis de classes constantes. Seus construtores podem conter argumentos e podem ser sobrecarregados.

 

O ponto e vírgula ao final da declaração de um ENUM é opcional. Ambos são válidos.

 

enum DiasSemana {SEGUNDA,TERÇA,QUARTA,QUINTA,SEXTA,SABADO};

enum DiasSemana {SEGUNDA,TERÇA,QUARTA,QUINTA,SEXTA,SABADO}

 

Bom pessoal, aqui segue o básico que serão cobradas no exame, no próximo assunto irei abordar sobre Controle de Fluxo.

 

Espero vocês no próximo artigo.

Fabiano Fernandes