ou eu nao entendi o que vc esta querendo dizer, ou voce cometeu um pequeno engano.
uma Inner Class pode chamar metodos protected da super class da classe container, acho 
que sempre pode, 
desde a introducao de Inner Classes (JDK 1.1, nao lembro mais ??, mas posso estar 
errado nesse ponto).

o exemplo abaixo compila e executa sem erros. usei JDK 1.3.1
os .java estao no zip.

/*
 * ClasseMae.java
 *
 * Created on July 6, 2001, 9:46 AM
 */

package pacote1;

/**
 *
 * @author  SLD
 * @version 
 */
public class ClasseMae {

    /** Creates new ClasseMae */
    public ClasseMae() {
    }
    
    public void printPublic(String s) {
        System.out.println(s);
    }

     protected void printProtected(String s) {
        System.out.println(s);
    }

    void printPackage(String s) { // package
        System.out.println(s);
    }

    private void printPrivate(String s) {
        System.out.println(s);
    }
}


/*
 * ClasseFilha.java
 *
 * Created on July 6, 2001, 9:46 AM
 */

package pacote2;

/**
 *
 * @author  SLD
 * @version 
 */
public class ClasseFilha extends pacote1.ClasseMae {

    /** Creates new ClasseFilha */
    public ClasseFilha() {
        printPublic   ("chamando 'printPublic'    na classe filha");
        printProtected("chamando 'printProtected' na classe filha");
        // printPackage  ("chamando 'printPackage'   na classe filha");  // Erro pq eh 
de outro pacote
        // printPrivate  ("chamando 'printPrivate'   na classe filha");  // Erro pq eh 
privada na ClasseMae

        InnerClass1 inc = new InnerClass1();
    }
    
    
    private class InnerClass1 {
        public InnerClass1() {
            printPublic   ("chamando 'printPublic'    na Inner Class em filha");
            printProtected("chamando 'printProtected' na Inner Class em filha");
            // printPackage  ("chamando 'printPackage'   na Inner Class em filha"); // 
Erro pq eh de outro pacote
            // printPrivate  ("chamando 'printPrivate'   na Inner Class em filha"); // 
Erro pq eh private na CLasse Mae
        }
    }
    
    public static void main(String[] s) {
        ClasseFilha cf = new ClasseFilha();
    }

}
 


On Fri, 06 July 2001, "Michael Santos" wrote:

> 
> Desculpe se vc se sentiu ofendido, mas perguntei qdo vc se certificou pq 
> antes da mudanca de outrubro (ou sera setembro?), todas as perguntas da 
> certificacao NAO DIZIAM QTAS OPCOES ESTAVAM CERTAS e pra mim cairam duas 
> perguntas ressaltando este ponto de acesso a private members.
> 
> Perguntei qdo pq acho q vc deve ter tirado depois disso e tvz isso tenha 
> feito com q o fato de vc desconhecer este ponto sobre private nao tenha tido 
> tanto peso qto deveria... Isso nao eh bem um erro de compilacao, pq pode 
> levar a erros de modelagem e analise (nao sei se eh isso q vc faz). Se vc 
> quiser ser analista OO, precisa conhecer estes pontos...
> 
> Mais uma curiosidade pra lista: protected eh uma caixinha de surpresas tb. 
> VC aprende desde o tutorial da Sun: protected permite q as subclasses e as 
> classes do mesmo pacote chamem o metodo. Entao em:
> 
> package pai;
> 
> public class Pai {
>    protected void algo() {
>    }
> }
> 
> package filho;
> 
> import pai.*;
> 
> public class Filho extends Pai {
>    private class InnerClass {
>       public InnerClass() {
>          algo(); //ERRO DE VISIBILIDADE DE ACESSO!!!!!!!!
>       }
>    }
> }
> 
> class OutraClasse {
>    public void algumMetodo() {
>       Filho f = new Filho();
>       f.algo(); //ERRO DE VISIBILIDADE DE ACESSO!!!!!!!!
>    }
> }
> 
> vc nao espera q ocorram estes erros de compilacao. O segundo, da 
> OutraClasse, parece ateh aceitavel, jah q um metodo protected soh pode ser 
> chamado por outra classe do pacote ONDE ELE FOI DEFINIDO (ninguem fala isso 
> com estas palavras). Agora, esse primeiro, no qual uma InnerClass NAO 
> CONSEGUE CHAMAR UM METODO PROTECTED DA SUPERCLASSE DA OUTERCLASS parece 
> muito bizarro, jah q vc aprende q todos os metodos da outer class (Filho) 
> sao visiveis a InnerClass e algo() eh um metodo da classe Filho por 
> heranca...
> 
> Bastante bizarro... Mas a solucao pra essa aberracao eh bem simples:
> 
> package pai;
> 
> public class Pai {
>    protected void algo() {
>    }
> }
> 
> package filho;
> 
> import pai.*;
> 
> public class Filho extends Pai {
>    protected void algo() {
>       super.algo();
>    }
> 
>    private class InnerClass {
>       public InnerClass() {
>          algo(); //COMPILA PERFEITAMENTE!!!!!!!!
>       }
>    }
> }
> 
> class OutraClasse {
>    public void algumMetodo() {
>       Filho f = new Filho();
>       f.algo(); //COMPILA PERFEITAMENTE!!!!!!!!
>    }
> }
> 
> Coisas do Java... Acho q vou traduzir e mandar pro Java Pitfalls da 
> JavaWorld... :-P
> 
> ----------------------------------------------------
> Michael Nascimento Santos
> Sun Certified Programmer for the Java 2 Platform
> Analista/Consultor
> Moderador SouJava - www.soujava.org.br
> CPM Sistemas - www.cpm.com.br
> 
> >From: "Edson Tirelli" <[EMAIL PROTECTED]>
> >Reply-To: [EMAIL PROTECTED]
> >To: <[EMAIL PROTECTED]>
> >Subject: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!
> >Date: Thu, 5 Jul 2001 17:41:15 -0300
> >
> >
> >    Uuups... q viagem... foi mal por essa...
> >    Valeu pelo exclarecimento. Como vc pode ver, nunca tinha precisado 
> >disso
> >antes. Vou passar a testar o codigo antes de enviar. :P
> >
> >    Quanto a minha certificacao, garanto q vale tanto quanto a de qq um. Eh
> >um pedaco de papel q diz q passamos numa prova. Agora na hora do trabalho
> >serio, nao eh ela q vai entregar o sistema funcionando e dentro do prazo...
> >erro de compilacao se resolve em 30 segundos... erro de logica e modelagem,
> >eh outra historia...
> >
> >    Abraco,
> >       Edson
> >
> >  ---
> >  Edson Tirelli
> >  System Analyst
> >  Microsoft Certified Professional
> >  Sun Certified Programmer for Java 2 Platform
> >  try Automatos @ www.automatos.com
> >
> >
> > > -----Mensagem original-----
> > > De: Michael Santos [mailto:[EMAIL PROTECTED]]
> > > Enviada em: quinta-feira, 5 de julho de 2001 16:45
> > > Para: [EMAIL PROTECTED]
> > > Assunto: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!
> > >
> > >
> > > Acho q seu compilador foi escrito pela Microsoft, meu camarada... :-P
> > > Isto nao compila nem aki nem na China, tenho certeza absoluta...
> > > Nao preciso
> > > nem testar, se vc tem:
> > >
> > > public class A {
> > >   private int x;
> > > }
> > >
> > > public class B extends A {
> > >   public B() {
> > >      x = 1;
> > >   }
> > > }
> > >
> > > e tentar compilar, vc vai receber ou "undefined variable: x" ou
> > > "variable x
> > > is not visible to B" ou alguma coisa assim...
> > > A resposta anterior eh correta...
> > >
> > > Qdo vc se certificou?????????????
> > >
> > > ----------------------------------------------------
> > > Michael Nascimento Santos
> > > Sun Certified Programmer for the Java 2 Platform
> > > Analista/Consultor
> > > Moderador SouJava - www.soujava.org.br
> > > CPM Sistemas - www.cpm.com.br
> > >
> > >     From: "Edson Tirelli" <[EMAIL PROTECTED]>
> > > Reply-To: [EMAIL PROTECTED]
> > > To: <[EMAIL PROTECTED]>
> > > Subject: RES: [java-list] Basico de OO em JAVA - CUIDADO
> > > Date: Thu, 5 Jul 2001 11:49:59 -0300
> > >
> > >
> > >     Amigos,
> > >
> > >     Este assunto inclusive circulou aqui na lista a um tempo atras. Eh 
> >um
> > > erro comum q eu tambem cometia no inicio, mas eh importante exclarecer: 
> >os
> > > modificadores de acesso limitam o ACESSO EXTERNO aos atributos  da 
> >classe,
> > > mas NAO LIMITAM A HERANCA.
> > >     Isso quer dizer q se uma classe eh FILHA de outra, ela vai HERDAR 
> >TUDO
> > > da classe MAE, podendo eventualmente sobrescrever algumas coisas (por
> > > exemplo, o q NAO estiver definido como "final" na classe mae).
> > >     Assim, no exemplo citado pelo colega:
> > >
> > > public class Mae {
> > >     private   int x;
> > >     protected int y;
> > > }
> > >
> > > public class Filha extends Mae {
> > >     // A FILHA HERDA O ATRIBUTO PRIVADO "X" E O ATRIBUTO PROTEGIDO "Y"
> > >     public Filha() {
> > >        x = 50;  // PERFEITAMENTE CORRETO
> > >        y = 100; // PERFEITAMENTE CORRETO
> > >     }
> > > }
> > >
> > >      Pra tentar exclarecer o modificador private, observe essa nova
> > > implementacao abaixo:
> > >
> > > public class Filha extends Mae {
> > >     // A FILHA HERDA O ATRIBUTO PRIVADO "X" E O ATRIBUTO PROTEGIDO "Y"
> > >     public Filha() {
> > >        x = 50;  // PERFEITAMENTE CORRETO
> > >        y = 100; // PERFEITAMENTE CORRETO
> > >     }
> > >
> > >     public void m() {
> > >         Mae amae = new Mae();
> > >         amae.x = 30;     // ERRO DE COMPILACAO -> x eh atributo privado 
> >de
> > > Mae
> > >         amae.y = 20;     // CORRETO -> y eh atributo protegido de Mae
> > >
> > >         this.x = 50;     // CORRETO -> atributo x herdado
> > >         this.y = 60;     // CORRETO -> atributo y herdado
> > >     }
> > > }
> > >
> > >      Observe q a diferenca entre atributos privados e protegidos eh q os
> > > atributos protegidos permitem o ACESSO EXTERNO quando o objeto q estiver
> > > fazendo o acesso for de uma classe FILHA ou DO MESMO PACOTE q a classe q
> > > contem o atributo.
> > >
> > >      Espero ter exclarecido, mais do que complicado... :)
> > >
> > >      Abraco,
> > >          Edson
> > >
> > > ---
> > > Edson Tirelli
> > > System Analyst
> > > Microsoft Certified Professional
> > > Sun Certified Programmer for Java 2 Platform
> > > try Automatos @ www.automatos.com
> > >
> > >
> > >
> > > -----Mensagem original-----
> > > De: Alexandre N�brega Duarte [mailto:[EMAIL PROTECTED]]
> > > Enviada em: quinta-feira, 5 de julho de 2001 08:10
> > > Para: [EMAIL PROTECTED]
> > > Assunto: Re: [java-list] Basico de OO em JAVA
> > >
> > >
> > > Acho que o que voce quer fazer e isso.
> > >
> > >
> > > public class Mae {
> > >
> > >     private int atributo;
> > >
> > >     public Mae(){
> > >
> > >     }
> > >
> > > }
> > >
> > >
> > > public class Filha extends Mae {
> > >
> > >     public Filha() {
> > >         atributo = 0;
> > >     }
> > > }
> > >
> > > Se for isso, eh impossivel, mas voce pode contornar este problema
> > > fazendo o
> > > atributo protected ao inves de private. Dessa forma ele continua a ser
> > > privado para quem esta de fora da classe mas fica publico para as 
> >classes
> > > filhas.
> > >
> > >
> > >
> > > public class Mae {
> > >
> > >     protected int atributo;
> > >
> > >     public Mae(){
> > >
> > >     }
> > >
> > > }
> > >
> > > Alexandre N�brega Duarte
> > > P�s-Gradua��o em Inform�tica
> > > Departamento de Sistemas e Computa��o
> > > Universidade Federal da Para�ba
> > > ----- Original Message -----
> > > From: Fabio Ferreira
> > > To: [EMAIL PROTECTED]
> > > Sent: Wednesday, July 04, 2001 5:13 PM
> > > Subject: [java-list] Basico de OO em JAVA
> > >
> > >
> > > Como se "seta" um atributo (private) herdado da classe mae no
> > > construtor da
> > > classe filha ?
> > >
> > > Fabio Ferreira
> > >
> > > ________________________________________________________________________
> _________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
> 
> 
> ------------------------------ LISTA SOUJAVA ---------------------------- 
> http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP 
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED] 
> -------------------------------------------------------------------------


Temp.zip

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a