Certificação Java SCJP

5 respostas
RDS1

package TestKiller_explicacoes;

  1. public class A {
  2. public void doit() {
  3. }
  4. public String doit() {
  5. return ?a?;
  6. }
  7. public double doit(int x) {
  8. return 1.0;
  9. }
    10.}

Pessoal alguem pode me explicar por favor, o pq que a resposta certa é a alternativa C , o codigo não caracteriza uma sobrecarga??

A. An exception is thrown at runtime.
B. Compilation fails because of an error in line 7.
C. Compilation fails because of an error in line 4. – pq que é essa a resposta certa ??
D. Compilation succeeds and no runtime errors with class A occur.

5 Respostas

RDS1

Pessoal acho que descobri, alguem pode só me confirmar!!

“Quando alteramos o tipo de retorno do metodo, obrigatoriamente temos que alterar a lista de argumentos”?? Seria isso ??

w1lson

$RDS$,

Para que exista uma sobrecarga os parâmetros do método devem ser alterados. Só é permitido modificar o tipo de retorno se os parâmetros forem diferentes. Neste caso o doIt() da linha 2 e da linha 4 tem os mesmos parâmetros ou seja, nenhum parâmetro, por isso dá erro.

Abraço,

w1lson

É isso mesmo.

RDS1

Obrigado amigão!!

mausexdd
Neste caso o doIt() da linha 2 e da linha 4 tem os mesmos parâmetros ou seja, nenhum parâmetro, por isso dá erro.

como nosso amigo disse ... eu aprendi uma associação simples que pode te ajudar...

Sobrecarga se define em... Metodos com o mesmo nome porem com assinaturas diferentes ex..
*NOME - ASSINATURA
public void setaID (int x);
public void setaID (String x);
public void setaID (double x);
public void setaID (char x);
public void setaID (float x);

pode-se tbm obter retornos diferentes com o mesmo tipo do dado , nao  influencia na sobrecarga.

public double entraNumero (double x){
return x;}
public double entraNumero (int x){
return x;}
public double entraNumero (float x){
return x;}

* float , int e byte se nao me engano podem ser promovidos a double sem problema algum porem tome cuidado
com a seguinte sobrecarga.

public int entraNumero (int x){
return x;} //ok
public int entraNumero (float x){
return x;} //ok
public int entraNumero (byte x){
return x;} //ok
public int entraNumero (double x){
return x;} //ERRO ! um metodo int nao pode retornar um double pois double nao se "Promove " a int seria como regredir de cargo...
Criado 22 de junho de 2011
Ultima resposta 22 de jun. de 2011
Respostas 5
Participantes 3