Michael !!!!! mude o modificador de declaracao da classe
filha!!!!!! como vc quer um construtor publico se a
classe é privada... nunca vi isso..
Abraços
Carlos Maurício
> Tecnicamente a documentacao diz o q vc falou, BUT...
>
> Erro no meu compilador (1.2.2 - JDK, Sun Microsystems)
no teu programa:
>
> pacote2\ClasseFilha.java:19: No method matching
> printProtected(java.lang.String) found i
> n class pacote2.ClasseFilha.
> printProtected
("chamando 'printProtected'na Inner Class em
> filha");
>
> ^
> 1 error
>
> Estranho... :-) Tvz isso soh se aplike ao 1.3.x ou
superior. Acredito q seja
> um bug nas versoes anteriores, pq segundo o q eu tb
entendo deveria
> compilar, mas jah faz 6 meses q venho encontrando
esses problemas com o
> 1.1.x e o 1.2
>
> Sobre meu exemplo original:
>
> No compilador q vem com o VisualAge 3.02, dah os erros
q eu falei (1.1.x)...
> No meu JDK 1.2, daki de casa, tb dah pau...
>
> Alguem podia tentar compilar meu codigo no 1.3???
> Pai.java
>
> package pai;
>
> public class Pai {
> protected void algo() {
> }
> }
>
>
*********************************************************
>
> Filho.java
>
> package filho;
>
> import pai.*;
>
> public class Filho extends Pai {
> private class InnerClass {
> public InnerClass() {
> algo(); //ERRO DE VISIBILIDADE DE
ACESSO!!!!!!!!
> }
> }
> }
>
> >From: [EMAIL PROTECTED]
> >Reply-To: [EMAIL PROTECTED]
> >To: [EMAIL PROTECTED]
> >Subject: Re: RES: [java-list] Basico de OO em JAVA -
CUIDADO MESMO!!!!
> >Date: 6 Jul 2001 07:38:34 -0700
> >
> >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.
> > >
> > >
>
>
_________________________________________________________
________________
> 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 java-list-
[EMAIL PROTECTED]
> -------------------------------------------------------
------------------
>
>
__________________________________________________________________________
Acesso pelo menor preço do mercado! R$ 14,90 nos 3 primeiros meses!
ASSINE AGORA! http://www.bol.com.br/acessobol/
------------------------------ 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]
-------------------------------------------------------------------------