Classes anonimas - kathy sierra certificação

2 respostas
LPJava

ae pessola queria tirar uma duvida qual o objetivo de criar classes anonimas? nao conseguir entender essa parte… mais tb queria tirar outra duvida o livro da kathy pg 363 em portgues a questao 6. pergunta:
quais das declaraçoes abaixo sao verdadeiras com relacao a classe interna local de metodo?
A. ela deve ser marcada com final
B. ela deve ser marcada com abstract
C. ela de ser marcada com public
D. ela deve ser marcad com static
E. Ela pode acessar membros privado da class encapsuladora.

bom eu marquei letra A, B, E. porem errei pois a kathy considerou apenas a letra B. E. Mas assim qdo ela explica sobre classe interna local ela fala que posso marca tb como final ou abstract e nao os dois… porem escolher um ou outro… entao nessa pergunta eu entendi q ela quis perguntar quais os niveis posso usar na class interna local? quem tiver o livro em ingles… e verificar agradeço… pode ser mais um erro… da tradução…

hehe nao esquecam de responder a minha primeira duvida valeu!

2 Respostas

J

Olá Camilo!!

Vamos lá!! Primeiro para a questão do livro. Na versão desse livro em inglês a questão da seguinte forma:

Quais da alternativas abaixo sobre classe interna local de método é verdadeira?

A. Ela deve ser marcada final
B. Ela pode ser marcada abstract
C. Ela pode ser marcada public
D. Ela pode ser marcada static
E. Ela pode acessar membros private da classe encapsuladora

Uma classe interna local de método não deve ser final e sim, ela pode ser final e pode ser declarada como abstract. Esse tipo de classe não pode ser declarado nem como public e nem como static. E como qualquer inner class ela pode acessar os membros da classe encapsuladora. Logo as repostas são B e E.

As classes anônimas, quando usadas, são mais usadas na parte de eventos. Eventos são tratados a partir de classes que implementam certas interfaces que representam os ouvintes. Com classes anônimas vc poderá criar uma classe que implemente uma interface ou sobrescreva um ou mais métodos de uma classe qualquer, sem precisar declarar o nome da classe, e ao mesmo tempo criar uma instância dessa classe.

Por exemplo:

Temos uma interface:

interface Pessoa{
      public static void quemSouEu();
}

Em alguma parte do código precisamos de um objeto do tipo Pessoa:

Pessoa pessoa = new Pessoa(){
      public static void quemSouEu(){ 
               System.out.println("Eu sou eu!!"); 
      }
}

Quando vc faz algo desse tipo, é criado implícitamente uma classe que implemente a interface Pessoa, depois é criada uma referência dessa classe e atribuída a variável pessoa que é do tipo Pessoa. Esse é um exemplo do que se pode fazer com esse recurso. Você poderá ver esse recurso sendo mais utilizado na parte de tratamento de eventos, mas de maneira um pouco diferente. Por exemplo:

Existe um método com a seguinte assinatura:

public void setPessoa(Pessoa p){//blá blá blá!!}

Em alguma parte do código:

objeto.setPessoa( new Pessoa(){
            public static void quemSouEu(){ 
                   System.out.println("Eu sou eu!!"); 
            }
      });

Aqui vc já tá fazendo a mesma coisa lá de cima, porém tá atribuindo a referência criada ao método.

Espero ter ajudado!!
Flw aew e t+!!

LPJava

a diferença do pode e do ser que mudou toda a historia. hehe!

Criado 10 de janeiro de 2007
Ultima resposta 10 de jan. de 2007
Respostas 2
Participantes 2