terça-feira, 26 de agosto de 2008

Declarando membros de classes - Parte 1

Olá javeiros de plantão! Vamos continuar o nosso estudo sobre a certificação SCJP da sun. Continuaremos estudando o objetivo 1 (Declaração, inicialização e escopo), ah por falar nisso, você pode clicar aqui para ver os objetivos da prova de SCJP 5.0. Agora iremos estudar os objetivos 1.3 e 1.4 que está relacionado com a criação de membros de classes. Vamos fazer uma rápida revisão de POO. Sabemos que uma classe é composta por um nome, atributos (propriedades) e métodos. As propriedades e métodos forma o que nós chamamos de membros de uma classe, é sobre como declarar esses membros que nós vamos aprender neste e em mais alguns posts daqui pra frente. Pronto, a revisão acabou por aqui! Eu falei pra você que era rápida né!?

Você lembra quando nós falamos sobre os modificadores de acesso a classes e sobre os níveis de acesso? (Eu não lembro) Membros também possuem níveis de acesso assim as classes. Porém, eles possuem os quatro níveis, diferente das classes que só usam dois. Os níveis são mostrados abaixo na ordem do mais restritivo para o menos restritivo:

private -> default -> protected -> public

Antes de explicarmos cada um deles, você precisa saber que a visibilidade desses membros vai depender inicialmente da visibilidade das classes (do nível de acesso das classes). Ou seja, se uma classe não consegue enxergar a outra, não importa que nível de acesso tenha seus membros, a classe não consiguirá acessar nenhum deles (ainda que sejam públicos). Isso pode dar um boa pegadinha na prova, então fique bem atento. Vamos estudar os membros o contrário do que está apresentado acima, ou seja, do public para o private. Vamos nessa então.

Membros Públicos (public)

Quando você define uma classe como public, qualquer outra classe do mundo vai enxergá-la. Quando você define um membro como public, qualquer classe que consiga acessar a sua classe vai enxergar o seu membro (pegou mal essa frase :) . Só tenho que te dizer mais uma coisa com relação aos membros públicos, é que eles sempre são herdados pelas classes que estenderem a sua. Já podemos então partir para um exemplo:


Animal.java
//Classe public diz que todos vão enxergá-la
public class Animal {
//Membro (variável) public,
//quem tiver uma instância de Animal
//ou estendê-la, poderá acessá-lo
public String nome;
}

Gato.java
// Esta classe ganhou por herança todos
// os membros public de Animal
public class Gato extends Animal {
public String raça;
}

package javeiro;
Exercicio1.java
public class Exercicio1 {

public static void main(String arg[]){
Gato g = new Gato();
//posso acessar o membro public herdado
g.nome = "Garfield";
//posso acessar o membro public de Gato
g.raça = "preguiçoso";
}
}
Muito fácil não é mesmo? A classe Exercicio1 está em um pacote de diferente de Animal e Gato, porém por estas serem públicas permite o acesso de qualquer lugar. Vimos também que temos livre acesso à variável nome, que foi herdada de Animal, e também à raça, que é um membro público de Gato. A gente vai ver depois que isso não é muito legal de fazer na vida real, mas para aprendizado serviu como uma luva.
Por enquanto é isso, no próximo post falaremos sobre membros protegidos (protected).
Até o próximo post então.

Nenhum comentário:

Postar um comentário