F�bio,
   Em Java, a especifica��o de literais num�ricas precisaria conter um
atributo que identificasse o seu tipo, principalmente em situa��es como
essa, em que existem 2 m�todos sobrecarregados com a mesma quantidade de
par�metros num�ricos. Por�m, para tornar a linguagem mais "male�vel" e menos
"r�gida", digamos assim, n�o obrigaram a especifica��o do tipo da literal
num�rica toda vez que ela ocorra. Isso pode provocar erros excusos, como
esse em que 2 m�todos com a mesma assinatura s�o diferenciados pelo
par�metro num�rico, que pode ser "int" ou "long", mas no momento da chamada,
literais num�ricas podem ser passadas sem qualquer especificador de tipo.
Ent�o, nesse caso, na chamada ao m�todo getParam, da classe Overload, na
linha 7, se voc� especificasse qual o tipo do literal  num�rico, o problema
n�o ocorreria. Para especificar que o m�todo que voc� quer chamar recebe um
par�metro do tipo long, basta chamar a fun��o com o indicador de tipo,
getParam(1L), onde o token "L" (ou "l") significa "long". Esse problema n�o
ocorreu com a vari�vel "i" no programa, porque vari�veis j� carregam o
atributo de tipo, no momento em que s�o declaradas...
   Sempre que ocorrer isso, procure inserir sempre o especificador de tipo
em literais.

[]'s
Rosfran

-----Original Message-----
From: Fabio Pereira
To: [EMAIL PROTECTED]
Sent: 24/11/2002 11:29
Subject: [java-list] Sobrecarga e heran�a

Pessoal,

me ocorreu a seguinte quest�o (copiem o c�digo para um editor para uma 
melhor visualiza��o):

/*
Erro obtido:

Overload.java:7: reference to getParam is ambiguous, both method 
getParam(int) in Base and method getParam(long) in Sub match
sub.getParam(i);     //Dever� chamar getParam de Base


Se comento a linha 7, funciona !!
Alguem sabe porque para a sobrecarga do m�todo getParam � ambiguo e para

getParam1 n�o � ??
*/

public class Overload{
        public static void main(String[] args){
                int i=10;
                long l = 10L;

                Sub sub = new Sub();
                sub.getParam(i);     //Dever� chamar getParam de Base
                sub.getParam(l);           //Dever� chamar getParam de
Sub

                sub.getParam1(i);    //Dever� chamar getParam1 de Sub
                sub.getParam1(l);          //Dever� chamar getParam1 de
Base
        }
}

class Base{
        public void getParam(int i){
                System.out.println("getParam da classe Base (parametros:
int)");
        }

        public void getParam1(long l){
                System.out.println("getParam1 da classe Sub (parametros:
long)");
        }
}

class Sub extends Base{
        public void getParam(long l){
                System.out.println("getParam da classe Sub (parametros:
long)");
        }

        public void getParam1(int i){
                System.out.println("getParam1 da classe Base
(parametros: int)");
        }
}


agrade�o antecipadamente,

Fabio Pereira


_________________________________________________________________
MSN Hotmail, o maior webmail do Brasil. 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
historico: http://www.mail-archive.com/java-list%40soujava.org.br
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
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a