Declarando Membros de Classe

Os métodos e as variáveis de instância (não-locais) são conhecidos coletivamente como membros. Você pode modificar um membro que tenha tanto modificadores de acesso como modificadores que não se referem a aesso e você tem mais modificadores a declarar do que quando está declarando classes.

Modificadores de Acesso

Enquanto uma classe só pode usar dois modificadores de acesso, os membros podem usar todos os quatros (public, private, default e protected). Precisamos saber duas questões diferentes relativas ao acesso.

  • Se o código de um método em uma classe pode acessar um membro de outra classe.
  • Se uma subclasse pode herdar um membro de sua superclasse.

O primeiro tipo de acesso ocorre quando um método de uma classe tenta acessar um método ou variável de outra classe, usando o operador ponto(.) para invocar um método ou invocar uma variável.

Exemplo:

class Carro{
      public String corCarro(){
          return “Vermelho”;
      }
}

class Classic{
     public void meuClassi(){
        Carro c = new Carro();
       System.out.println(“Cor do Classic ” + c.corCarro());
    }
}

O segundo tipo de acesso refere-se a quais membros de uma superclasse pode invocar um método para uma instância da superclasse. Em vez disso, queremos saber se a subclasse pode herdar um membro da sua superclasse. Lembre-se que se uma subclasse herda um membro é exatamente como se a subclasse tivesse declarado o membro ela mesma. Em outras palavras, se uma subclasse herdar um membro, então ela possui esse membro.

Membros Public

Quando um método ou variável membro é declarada public, isso significa que todas as outras classes, independentemente do pacote ao qual pertençam podem acessar o membro em questão.

Três formas de acessar um método:

  • Invocando um método declarado na mesma classe;
  • Invocando um método usando referência da classe;
  • Invocando um método herdado.

Para uma subclasse, se um membro da sua superclasse for declarado public, a subclasse herda esse membro independentemente de ambas as classes estarem no mesmo pacote ou não.

Membros Private

Membros marcados como private não podem se acessados por código em nenhuma outra classe que não aquela na qual o membro private foi declarado. Quando um membro é marcado como private, nem mesmo uma subclasse poderá enxerga-lo. Caso uma subclasse declare um método com o mesmo nome do método substituto.

Membros Protected e Default

Os níveis de controle de acesso protected e default são quase que idênticos, mas com uma diferença fundamental. Um membro default só pode ser acessado se a classe que o estiver acessando pertencer ao mesmo pacote, enquanto que um membro protected poder ser acessado (através de herança) por uma suclasse mesmo se a subclasse estiver em um pacote diferente.

Depois que uma subclasse de fora do pacote herda o membro protected, ele (conforme herdado pela subclasse) torna-se private para qualquer código de fora da subclasse, com a execução das subclasses dessa subclasse.

Quando não colocamos um modificador de acesso na frente da variável ela se torna padrão.

 

Fonte: Guia de Estudo SCJP
Autor Kathy Sierra e Bert Bates

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s