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

2001-07-10 Por tôpico Jorge Martins

Então está tudo certo.

Era só problema de comunicação.

Estamos todos certos.

abraços

Jorge

-Original Message-
From: Edward Roe [mailto:[EMAIL PROTECTED]]
Sent: terça-feira, 10 de julho de 2001 12:44
To: [EMAIL PROTECTED]
Subject: RE: RES: [java-list] Basico de OO em JAVA - CUIDADO



Oi,

> Você está tendo um erro conceitual. Uma subclasse pode acessar 
qualquer
> método protected sim. 

>O que você está fazendo é criando um novo objeto da
> classe pai, então, obviamente nenhum método protegido será acessado.

 Foi isso que eu disse, a menos que a classe filha esteja no mesmo 
pacote da classe mãe (ou pai), então métodos protegidos poderão ser 
acessados...

 O que eu disse no meu primeiro e-mail foi que membros protected de uma 
classe só podem ser acessados por classes de mesmo pacote, mesmo a 
subclasses só terão acesso aos membros HERDADOS.
 
> No entanto, caso você utilize um método de objeto (não static), pode
> perfeitamente referenciá-lo utilizando  this.x.

 Acho que vc não entendeu o que eu falei. Não tem nada a ver com o uso 
do this. 

 this acessa membros
> Pode testar, neste seu exemplo, incluir em SubClasse o método:
> 
> public int getX()
> {
>return this.x;
> }

 Quando voce faz 
public int getX() { return x; }
 esta fazendo a mesmo coisa que com o uso do this... ele esta implícito 
lá.
  
> E para demonstrar que a visibilidade do java é de classe, como eu 
disse no
> e-mail anterior, você retirar as linhas:
> 
>SuperClasse sc = new SuperClasse();
>sc.x = 34; 
> Que seu exemplo compilará normalmente.

 Claromas isso não demostra não, voce quer retirar a parte mais 
importante do exemplo Se as classes estiverem num mesmo pacote, o 
exemplo compilaria sem precisar retirar essas linhas de codigo.

> Logo, o tipo de visibilidade protected do java mantém o padrão da 
orientação
> objeto em que qualquer subclasse pode acessar o método ou atributo.

 herdado.


  Acho que este assunto ja se extendeu bastante

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

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

2001-07-10 Por tôpico Edward Roe


Oi,

> Você está tendo um erro conceitual. Uma subclasse pode acessar 
qualquer
> método protected sim. 

>O que você está fazendo é criando um novo objeto da
> classe pai, então, obviamente nenhum método protegido será acessado.

 Foi isso que eu disse, a menos que a classe filha esteja no mesmo 
pacote da classe mãe (ou pai), então métodos protegidos poderão ser 
acessados...

 O que eu disse no meu primeiro e-mail foi que membros protected de uma 
classe só podem ser acessados por classes de mesmo pacote, mesmo a 
subclasses só terão acesso aos membros HERDADOS.
 
> No entanto, caso você utilize um método de objeto (não static), pode
> perfeitamente referenciá-lo utilizando  this.x.

 Acho que vc não entendeu o que eu falei. Não tem nada a ver com o uso 
do this. 

 this acessa membros
> Pode testar, neste seu exemplo, incluir em SubClasse o método:
> 
> public int getX()
> {
>return this.x;
> }

 Quando voce faz 
public int getX() { return x; }
 esta fazendo a mesmo coisa que com o uso do this... ele esta implícito 
lá.
  
> E para demonstrar que a visibilidade do java é de classe, como eu 
disse no
> e-mail anterior, você retirar as linhas:
> 
>SuperClasse sc = new SuperClasse();
>sc.x = 34; 
> Que seu exemplo compilará normalmente.

 Claromas isso não demostra não, voce quer retirar a parte mais 
importante do exemplo Se as classes estiverem num mesmo pacote, o 
exemplo compilaria sem precisar retirar essas linhas de codigo.

> Logo, o tipo de visibilidade protected do java mantém o padrão da 
orientação
> objeto em que qualquer subclasse pode acessar o método ou atributo.

 herdado.


  Acho que este assunto ja se extendeu bastante

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




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

2001-07-10 Por tôpico Jorge Martins

Bom,

Você está tendo um erro conceitual. Uma subclasse pode acessar qualquer
método protected sim. O que você está fazendo é criando um novo objeto da
classe pai, então, obviamente nenhum método protegido será acessado.

No entanto, caso você utilize um método de objeto (não static), pode
perfeitamente referenciá-lo utilizando  this.x.

Pode testar, neste seu exemplo, incluir em SubClasse o método:

public int getX()
{
   return this.x;
}


E para demonstrar que a visibilidade do java é de classe, como eu disse no
e-mail anterior, você retirar as linhas:

   SuperClasse sc = new SuperClasse();
   sc.x = 34; 


Que seu exemplo compilará normalmente.


Logo, o tipo de visibilidade protected do java mantém o padrão da orientação
objeto em que qualquer subclasse pode acessar o método ou atributo.

abraços

Jorge

-Original Message-
From: Edward Roe [mailto:[EMAIL PROTECTED]]
Sent: segunda-feira, 9 de julho de 2001 15:52
To: [EMAIL PROTECTED]
Subject: RE: RES: [java-list] Basico de OO em JAVA - CUIDADO



Oi,

>Não é isso não.
> 
>A visibilidade protected permite qualquer classe do mesmo pacote e
> qualquer sub-classe em qualquer pacote visualizar.

 Entao tenta isso e me diz o que acontece:

 package pacote1;
 public class SuperClasse
 {
protected int x;
 }

 package pacote2;
 import pacote1.*;
 public class SubClasse extends SuperClasse
 {
public static void main(String [] args)
{
   SuperClasse sc = new SuperClasse();
   SubClasse sbc = new SubClasse();
   sc.x = 34; 
   sbc.x = 55; 
}
 }
 

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

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

2001-07-10 Por tôpico Edward Roe


Oi,

>Não é isso não.
> 
>A visibilidade protected permite qualquer classe do mesmo pacote e
> qualquer sub-classe em qualquer pacote visualizar.

 Entao tenta isso e me diz o que acontece:

 package pacote1;
 public class SuperClasse
 {
protected int x;
 }

 package pacote2;
 import pacote1.*;
 public class SubClasse extends SuperClasse
 {
public static void main(String [] args)
{
   SuperClasse sc = new SuperClasse();
   SubClasse sbc = new SubClasse();
   sc.x = 34; 
   sbc.x = 55; 
}
 }
 

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




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

2001-07-10 Por tôpico Edward Roe


 Oi,

  Não existe friendly em Java, Esta entre aspas porque o default (sem 
nome) é as vezes referenciado como friendly.
 
> Paulo,
> creio que friendly é somente em C++!
> >Esse é o tal do "friendly"


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




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

2001-07-09 Por tôpico Jorge Martins

   Não é isso não.

   A visibilidade protected permite qualquer classe do mesmo pacote e
qualquer sub-classe em qualquer pacote visualizar.

Para simplificar:

private - só a mesma classe

(default) - classes do mesmo pacote

protected - classes do mesmo pacote e subclasses em QUALQUER pacote

public - qualquer classe.


   Isso causa uma estranheza, pois o default é MENOS protegido que o
protected!!! Mas é assim mesmo.


   Outro detalhe que geralmente passa desapercebido é que a visibilidade em
java é para classes e não para objetos.


   Logo um objeto pode acessar um campo private de OUTRO objeto da MESMA
CLASSE.

   Exemplo:

class Objeto
{
private int valor;

public int menos(Objeto obj)
{
return this.valor - obj.valor;
}
}



abraços

Jorge

-Original Message-
From: Edward Roe [mailto:[EMAIL PROTECTED]]
Sent: sexta-feira, 6 de julho de 2001 10:40
To: [EMAIL PROTECTED]
Subject: Re: RES: [java-list] Basico de OO em JAVA - CUIDADO



 Oi,

 Exatamente esse é o ponto de confusão que eu ja falei aqui antes. Voce 
não pode usar um atributo protected da superclasse a menos que vc 
esteja no mesmo pacote. Voce só tem acesso livre ao atributo herdado.

> um atributo "protected" eh sempre visivel para uma classe derivada,
> independente de package.
> eh essa a diferenca entre "protected" e o "package".

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

-- 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 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 {
> > &

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

2001-07-09 Por tôpico Leandro Fernandes Afonso

Paulo,
creio que friendly é somente em C++!

flws
Alan
-Mensagem original-
De: Paulo Rogério Panhoto <[EMAIL PROTECTED]>
Para: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Data: Sexta-feira, 6 de Julho de 2001 09:58
Assunto: Re: RES: [java-list] Basico de OO em JAVA - CUIDADO


>Esse é o tal do "friendly"
>
>Edward Roe wrote:
>
>> Oi,
>>
>> > Pelo que me lembre Um atributo private não pode ser acessado
>> por uma
>> > classe filha. Um protected pode. Essa é a diferença entre private e
>> protected.
>>
>>  Cuidado também com o protectedvai depender dos pacotes que a filha
>> e a mae estao..
>>
>>  []´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]
>> -
>
>--
>Paulo Rogerio Panhoto
>
>Voice Technology
>
>
>
>-- 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]
>-
>


-- 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();
> > }
> >
> >}
> >
> >
>

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

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

2001-07-07 Por tôpico silvio

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: "

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

2001-07-07 Por tôpico Edward Roe


Oi,

> Esse é o tal do "friendly"

  O "friendly", que é o default, já é outra história...


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




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

2001-07-07 Por tôpico Edward Roe


 Oi,

 Exatamente esse é o ponto de confusão que eu ja falei aqui antes. Voce 
não pode usar um atributo protected da superclasse a menos que vc 
esteja no mesmo pacote. Voce só tem acesso livre ao atributo herdado.

> um atributo "protected" eh sempre visivel para uma classe derivada,
> independente de package.
> eh essa a diferenca entre "protected" e o "package".

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




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

2001-07-07 Por tôpico Emerson Santana Pardo

Ahn...

Então deve ser assim:

if(protected && acessandoNaSubClasse)
 acesso = true;

if(protected && acessandoNaSubClasse && acessandoNoMesmoPacote)
 acesso = true;

if(protected && acessandoNaSubClasse && !acessandoNoMesmoPacote)
 acesso = false;

At 18:31 5/7/2001, Edward Roe wrote:

>  Oi,
>
>   O problema é que as vezes as pessoas confundem o que isso representa,
>veja esse exemplo:
>
>   package pacote1;
>   public class SuperClasse
>   {
>  protected x;
>   }
>
>   package pacote2;
>   import pacote1.*;
>   public class SubClasse extends SuperClasse
>   {
>  public static void main(String [] args)
>  {
> SuperClasse sc = new SuperClasse();
> SubClasse sbc = new SubClasse();
> sc.x = 34; // invalido
> sbc.x = 55; // valido
>  }
>   }
>
>
> > Retirado do tutorial da Sun:
> >
>
> >
> > Specifier class subclass package world
> > private X
> > protected   X   X   X
> > public  X   X   X  X
> > package X   X
> >
> > Ou seja: um atributo com modificador private só é acessível pela
>classe
> > onde ele é definido. Um atributo com modificador protected é
>acessível
> > dentro da classe onde ele é definido, pelas classes filhas e pelas
>classe
> > do mesmo pacote a que pertence a classe onde ele foi definido.
>
>
>  []´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]
>-

[]'s
Emerson



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

2001-07-06 Por tôpico Paulo Rogério Panhoto

Esse é o tal do "friendly"

Edward Roe wrote:

> Oi,
>
> > Pelo que me lembre Um atributo private não pode ser acessado
> por uma
> > classe filha. Um protected pode. Essa é a diferença entre private e
> protected.
>
>  Cuidado também com o protectedvai depender dos pacotes que a filha
> e a mae estao..
>
>  []´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]
> -

--
Paulo Rogerio Panhoto

Voice Technology



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

2001-07-06 Por tôpico Edward Roe


 Oi,

  O problema é que as vezes as pessoas confundem o que isso representa, 
veja esse exemplo:

  package pacote1;
  public class SuperClasse
  {
 protected x;
  }

  package pacote2;
  import pacote1.*;
  public class SubClasse extends SuperClasse
  {
 public static void main(String [] args)
 {
SuperClasse sc = new SuperClasse();
SubClasse sbc = new SubClasse();
sc.x = 34; // invalido
sbc.x = 55; // valido
 }
  }


> Retirado do tutorial da Sun: 
> 

> 
> Specifier class subclass package world
> private X
> protected   X   X   X
> public  X   X   X  X
> package X   X
> 
> Ou seja: um atributo com modificador private só é acessível pela 
classe 
> onde ele é definido. Um atributo com modificador protected é 
acessível 
> dentro da classe onde ele é definido, pelas classes filhas e pelas 
classe 
> do mesmo pacote a que pertence a classe onde ele foi definido.


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




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

2001-07-06 Por tôpico Silvio L. de Morais

um atributo "protected" eh sempre visivel para uma classe derivada,
independente de package.
eh essa a diferenca entre "protected" e o "package".

- Original Message -
From: "Edward Roe" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, July 05, 2001 4:02 PM
Subject: Re: RES: [java-list] Basico de OO em JAVA - CUIDADO


>
> Oi,
>
> > Pelo que me lembre Um atributo private não pode ser acessado
> por uma
> > classe filha. Um protected pode. Essa é a diferença entre private e
> protected.
>
>  Cuidado também com o protectedvai depender dos pacotes que a filha
> e a mae estao..
>
>  []´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]
> -
>
>


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

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

2001-07-05 Por tôpico Emerson Santana Pardo

Retirado do tutorial da Sun: 


Specifier class subclass package world
private X
protected   X   X   X
public  X   X   X  X
package X   X

Ou seja: um atributo com modificador private só é acessível pela classe 
onde ele é definido. Um atributo com modificador protected é acessível 
dentro da classe onde ele é definido, pelas classes filhas e pelas classe 
do mesmo pacote a que pertence a classe onde ele foi definido.

[]'s
Emerson



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

2001-07-05 Por tôpico Edward Roe


Oi,

> Pelo que me lembre Um atributo private não pode ser acessado 
por uma
> classe filha. Um protected pode. Essa é a diferença entre private e 
protected.

 Cuidado também com o protectedvai depender dos pacotes que a filha 
e a mae estao..

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




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

2001-07-05 Por tôpico silvio

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


Acho que houve um pequeno engano no seu exemplo.
A classe Filha nao vai nem compilar. 
A linha 

x = 50; 

vai gerar um erro, pois um atributo "private" eh privado mesmo, nem classes filhas 
podem ter acesso a esses atributos (ou mothods, se fosse o caso).
Em C++ existe o conceito de funcao/classe amiga, mas nada parecido existe em Java 
(ainda bem).

No exemplo, para poder escrever em X, apenas coloque assessors e pronto, o que eh 
muito mais OO.

 public class Mae {
 private   int x;
 protected int y;

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}


 }
 
 public class Filha extends Mae {
 // A FILHA HERDA O ATRIBUTO PRIVADO "X" E O ATRIBUTO PROTEGIDO "Y"
 public Filha() {
setX(50);  // PERFEITAMENTE CORRETO porque "setX" eh public
//ou 
super.setX(50); // que eh ainda mais claro
y = 100; // PERFEITAMENTE CORRETO porque "y" eh protected
 }
 }


A classe filha herda o atributo "x", mas not tem direito de escrita ou leitura a esse 
valor. Ou seja, a variavel existe, ocupa espaco na memoria, mas nao pode ser 
manipulado por methodos das classes filhas.

No livro do Flanagan, Java in a nut shell, 2nd edicao, pg. 73 tem um quadro bem claro 
dos metodos de acesso.

visivel para:  |  public  | protected  | package  | private
A mesma classe | yes  | yes|yes   |yes
Classes no mesmo package   | yes  | yes|yes   |no
subclasses em packages diferentes  | yes  | yes|no|no
non-subclass, e differente packages| yes  | no |no|no

De plantao no feriadao, escritorio vazio, e muito tempo para escrever emails  :-)






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




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

2001-07-05 Por tôpico Paulo Rogério Panhoto

Pelo que me lembre Um atributo private não pode ser acessado por uma
classe filha. Um protected pode. Essa é a diferença entre private e protected.

Isso não é válido??

Edson Tirelli wrote:

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

--
Paulo Rogerio Panhoto

Voice Technology
Tel.: +55-11-5085-2934
Fax: +55-11-5085-2933



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