Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-10 Por tôpico Michael Santos

Gozado, consegui testar no 1.3.0 build C e nao compilou tb..., deu o mesmo 
erro de visibilidade, soh compila se o metodo for declarado public na 
superclasse ou se eu fizer um overriding em Filho soh pra fazer 
super.algo().

Nao sei se vc jogou o codigo exatamente como eu fiz, i. e., EM DOIS 
PACOTES diferentes, pq no mesmo pacote eu sei q compila mesmo. Se vc puder 
confirmar isso...

Resumindo minhas tentativas ateh agora:

1.1.7 - VA 3.0.2 - nao compila!
1.2.2 build W - Sun  - nao compila!
1.3.0 build C - Sun  - nao compila!

filho\Filho.java:8: No method matching algo() found in class filho.Filho.
 algo(); //ERRO DE VISIBILIDADE DE ACESSO!!!

O codigo original encontra-se logo abaixo para as almas destemidas q 
queiram testar este comportamento estranho do Java - lembrando: em dois 
pacotes diferentes...

Joguei metade das msgs desta thread fora pra aliviar minha msg (jah tava em 
17k!). Quem acompanhou ateh aki, sabe o q rolou e soh o q sobrou eh q eh 
pertinente apos todas as explicacoes, anyway...


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: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO
Date: 9 Jul 2001 10:47:16 -0700

Carlos, o fato da Inner Class ser private nao faz diferenca.

Michael, rodei o teu codigo nos seguintes compiladores:

jdk 1.1.8_008
jdk 1.2.2_008
jdk 1.3.1
jdk 1.4 (beta)

Que sao todas as versoes que eu tenho na minha maquina (para testes de 
compatibilidade)

O teu programa compila em todas as versoes.

Usei o JBuilder 4 para os testes. Nesse ponto esse IDE eh realmente muito 
bom, eh o ambiente mais facil para trocar de JDK que eu jah vi, fiz esses 
testes em menos de 5 minutos, alias, descobri isso por causa dessa thread, 
valeu.
Nao compilei com command line porque eh um saco arrumar classpath a mao 
para cada versao (eu sei que jah deveria ter batchs prontos para isso, 
mas...)

E como acabou o feriadao, vou ficando por aqui nessa conversa.

[]'s

Silvio




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




Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-10 Por tôpico silvio

 
 Gozado, consegui testar no 1.3.0 build C e nao compilou tb..., deu o mesmo 
 erro de visibilidade, soh compila se o metodo for declarado public na 
 superclasse ou se eu fizer um overriding em Filho soh pra fazer 
 super.algo().


isso merece mais investigacao. Assim que eu tiver tempo novamente vou testar em outros 
jdks. 

 
 Nao sei se vc jogou o codigo exatamente como eu fiz, i. e., EM DOIS 
 PACOTES diferentes, pq no mesmo pacote eu sei q compila mesmo. Se vc puder 
 confirmar isso...
 

sim, coloquei em 2 pacotes separados, mas com a mesma raiz.
com.iconos.tests.pacote1 e
com.iconos.tests.pacote2




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




Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-09 Por tôpico masterjedi2000

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

Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-09 Por tôpico silvio

Carlos, o fato da Inner Class ser private nao faz diferenca. 

Michael, rodei o teu codigo nos seguintes compiladores:

jdk 1.1.8_008
jdk 1.2.2_008
jdk 1.3.1
jdk 1.4 (beta) 

Que sao todas as versoes que eu tenho na minha maquina (para testes de compatibilidade)

O teu programa compila em todas as versoes. 

Usei o JBuilder 4 para os testes. Nesse ponto esse IDE eh realmente muito bom, eh o 
ambiente mais facil para trocar de JDK que eu jah vi, fiz esses testes em menos de 5 
minutos, alias, descobri isso por causa dessa thread, valeu.
Nao compilei com command line porque eh um saco arrumar classpath a mao para cada 
versao (eu sei que jah deveria ter batchs prontos para isso, mas...)

E como acabou o feriadao, vou ficando por aqui nessa conversa.

[]'s

Silvio




On Sun, 08 July 2001, masterjedi2000 wrote:

 
 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

Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-07 Por tôpico Michael Santos

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

Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-06 Por tôpico Michael Santos

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

RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-05 Por tôpico Michael Santos

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




Re: RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-05 Por tôpico Edward Roe


 Oi,

 Correto...

 e tentar compilar, vc vai receber ou undefined variable: x 
ou variable x
 is not visible to B ou alguma coisa assim...

  a msg será: x has private access in class A
 onde A é a superclasse

 []´s

-- 
Edward Roe

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




RES: [java-list] Basico de OO em JAVA - CUIDADO MESMO!!!!

2001-07-05 Por tôpico Edson Tirelli


   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