Dúvida em sobrecarga de métodos

Na sobrecarga, quais combinações podem gerar ambigüidade (ambiguous)?
Existe alguma regra e/ou dica para se identificar ambigüidade na referência para o método?
Cai esse tipo de questão no exame?

conto com a ajuda de vcs!

Valeu!

Basicamente:

1 - As listas de argumento precisam ser diferente;
2 - Os tipos de retorno podem ser diferentes

Completando o que o Khaoz falou, a sobrecarga lhe possibilita a reutilização do mesmo nome de um metodo em uma classe por exemplo, com argumentos diferentes. Ou mesmo Varios construtores com argumentos diferentes dentro de uma classe. Quando a sobrecarga é em metodos de classes, é importante ficar atento na prova para situações em que os argumentos utilizados no metodo sejam classes que são um Object por exemplo:

[code] public class Foo {

   public static void bar(String foo, Object bar) {  
          System.out.println("bar 1");  
   }  
 
   public static void bar(Object foo, Integer bar) {  
         System.out.println("bar 2");  
   }  
  
   public static void main(String[] args) {  
         bar("foo", new Integer(1);  
   }  

[/code]

O codigo acima não irá compilar, por que há ambiguidades na sobrecarga dos métodos. A ambiguidade acontece por que uma String é um Objeto (Object), e uma classe Wrapper Integer tambem.

Entao fica atento a isso na prova.

Uma outra possibilidade que cai na prova é quando ele utiliza metodos com mesmo nome, porem os argumentos sao iguais, mesmo trocando os nomes, como por exemplo:

[code] public class Foo {

   public static void bar(String foo, String bar) {  
          System.out.println("bar 1");  
   }  
 
   public static void bar(String foo2, String bar) {  
         System.out.println("bar 2");  
   }  
  
   public static void main(String[] args) {  
         bar("foo", "bar" ); 
   }  

[/code]

Voce pode cair nessa, pensando que ele alterou o argumento, somemte porque o nome dele esta diferente. Lembra que para ter argumentos diferente é preciso que o tipo deles sejam diferentes.

Acho que esse vai ser a última coisa do tópico… só pra dar uma complementada no que o cara aqui de cima falou:

[code]
class Foo {

public static int getAlgo (String i) {
    return 1;
}

public static String getAlgo (String i){
    return "algo";
}

public static void main (String[] args) {
    String test = getAlgo("qualquer.coisa")
}

}[/code]

Não sei se esse tipo de questão cai no exame, mas se caisse e a questão perguntasse se o exemplo causa ambiguidade, a resposta seria que não causa. Isso é um método duplicado (getAlgo(String)), também não compilaria, mas não seria por causa de ambiguidade.

Pessoal,
acabei de estudar sobre métodos sobrescritos e sobrecarregados no cap 2 do livro da Kathy e não tinha nada de ambiguidade.
Será que ainda terá algo mais sobre métodos sobrecarregados no livro ou não?
Valeu.

Geralmente na prova e nos livros a palavra ambiguidade não está muito explicita. As questões elaboradas para sobrecarga, utilizando ou não ambiguidade, tem respostas como O Código não compila, O código compila, e assim vai. No livro os capitulos posteriores vao utilizar nos exemplos, trechos que utilizam polimorfismo, metodos sobrecarregados,etc, mas agora com o foco em outros assuntos. Pode cair por exemplo uma questao de Arquivo que em alguma classe utiliza metodos sobrecarregados e a resposta é O Codigo Nao compila, não por um erro na utilização de arquivos mas sim que tinha um metodo la que estava com ambiguidade.

O whizlabs é um bom material, e tem alguns exemplos de questoes com ambiguidade que a resposta é O Codigo Nao Compila.

Quando fiz minha prova, estudei pelo livro da Kathy e pelo wizlabs. Foi o suficiente.

[quote=fabiosvaz]Geralmente na prova e nos livros a palavra ambiguidade não está muito explicita. As questões elaboradas para sobrecarga, utilizando ou não ambiguidade, tem respostas como O Código não compila, O código compila, e assim vai. No livro os capitulos posteriores vao utilizar nos exemplos, trechos que utilizam polimorfismo, metodos sobrecarregados,etc, mas agora com o foco em outros assuntos. Pode cair por exemplo uma questao de Arquivo que em alguma classe utiliza metodos sobrecarregados e a resposta é O Codigo Nao compila, não por um erro na utilização de arquivos mas sim que tinha um metodo la que estava com ambiguidade.

O whizlabs é um bom material, e tem alguns exemplos de questoes com ambiguidade que a resposta é O Codigo Nao Compila.

Quando fiz minha prova, estudei pelo livro da Kathy e pelo wizlabs. Foi o suficiente.[/quote]

Bom então vou esperar pra ver se fica mais claro pra mim.
Fábio qual foi seu score usando este médodo de estudo livro-whizlabs?
Abraço.

Pelo aperto que eu estava recebendo da empresa para poder tirar a certificação, tive 3 semanas para estudar. Como falei utilizando o livro e o whizlabs, consegui 80%. Como eu trabalhava com JAVA antes de fazer a prova, fica mais tranquilo utilizando so esses 2 recursos. Mas tente fazer o maximo de questoes possiveis, exercite bem. Se voce tiver a possibilidade nao fique so no whizlabs por exemplo. porque voce acaba se convencionando com as questoes e pode achar que “sabe” mas no fim das contas ta decorado e nao entendendo o fundamento de um assunto.

É um bom score.
Quem me dera… rs
Uma pergunta, o whizlabs é gratuito?
Valeu.

Não é pago. Existe uma versao demo mas eu acho que nao ajuda muito. A paga é algo de no maximo 100 reais. E vem mais de uma licença. 4 se nao me engano. Entao voce poderia juntar mais 3 pessoas que querem fazer a prova e dividir a compra das licenças.

Dividindo pra 4 fica bem mais fácil. heehehe
Valeu pelas dicas!