O problema eh que vc tem 2 metodos que podem atender a chamada da linha 7.
public void getParam(int i)
e
public void getParam(long i)
Porque isso? Porque Java promove 'int' para 'long' no momento de determinar
qual metodo vai ser chamado, e nesse caso os dois metodos podem atender,
logo gera a ambiguidade.
Eu gosto muito de Java (tem pago as contas por varios anos :-). Mas o fato
de nao ser uma linguagem 100% O.O as vezes atrapalha a vida de programadores
iniciantes. Esse eh um caso.
E observe que mesmo forcando um cast do tipo
sub.getParam((int) i);
nao vai funcionar, porque o compilador sempre tenta promover o "int";
Em linguagens puramente O.O. (Eifel, Smaltalk) isso nao acontece, mas ai
aparecem outras idiossincrasias. Nao existe linguagem perfeita, ainda que
Eiffel chegue perto.
Silvio
----- Original Message -----
From: "Fabio Pereira" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, November 24, 2002 10:29 AM
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]
-------------------------------------------------------------------------