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] 
-------------------------------------------------------------------------

Responder a