Classe interna private

4 respostas
O

Olá, primeiramente ! Este é o meu primeiro post. Comecei a estudar para certificação, então resolvi me cadastrar no forum pois estava com muitas dúvidas.

No livro que estou usando para estudar (Certificação Java5 / Roberto Rubinstein Serson) tinha a seguinte questão:

Qual será o resultado da compilação e execução do seguinte código ?

class MyOuter {
   private class MyInner {
      float f() { return 1.2f; }
   }
   MyInner getInner() {
      return new MyInner();
   }
}

class Test {
   public static void main(String[] args) {
      MyOuter outer = new MyOuter();
      System.out.println( outer.getInner().f() );
   }
}

A) Imprime 1.2
B) Erro de compilação: não pode acessar métodos de uma classe interna private
C) Erro de compilação: não pode acessar objetos de uma classe interna private
D) Nenhuma das anteriores

A resposta, segundo o gabarito do livro, é A porém nos testes que fiz na prática, ocorre um erro de compilação …

No livro diz que pode-se utilizar a referência da classe interna private retornado por um método da classe externa para acessar os membros (dessa classe interna private) …

Bom, eu só queria confirmar com alguém daqui … obrigado =) !

4 Respostas

kotho

Tem 2 arquivos nesse trecho… MyOuter.java e Test.java… Foi assim que você fez???

J

Esse código só compila se o método main estiver dentro da classe MyOuter. Lembre-se membros privados são acessados apenas dentro da própria classe. Do jeito que está, o método f() da classe interna está sendo invocado em outra classe (Test), o que acarreta em um erro de compilação.

sandeco

A classe é um membro private como qualquer outro…
Tentar acessá-lo de uma classe externa não funciona o compilador vai gritar!

O

Opa, muito obrigado para o pessoal que respondeu !!! Valeu mesmo !!!

Criado 9 de novembro de 2009
Ultima resposta 15 de nov. de 2009
Respostas 4
Participantes 4