[quote=glauber_rochab]Olá internetws,
posso entender, de acordo com sua explicação, que para que ocorra uma sobregarca:
- 1 o tipo de retorno deve ser o mesmo do método da classe pai;
- 2 o nome do método deve ser o mesmo do método da classe pai;
- 3 os argumentos podem ser diferentes.
além de que:
- 4 o modificador de acesso não pode ser menos restritivo que o do método da classe pai;
Mas eu acho q não seja isso…
fiz um teste, veja:
public class Animal {
public Animal(){
}
public void eat() {
System.out.println("Animal eat");
}
}
e:
public class Horse extends Animal {
public Horse() {
}
public void eat(String food) {
System.out.println("Animal eat: "+food);
}
}
no momento de instância eu chamei o método eat mas apareceram os dois métodos… ou seja, nao ocorreu uma sobrecarga, a JVM entendeu que eat() e eat( String food) são dois métodos diferentes…
Daih eu acho que não… para ser uma sobrecarga a assinatura (incluindo os argumentos) têm que ser iguais…
Alguém poderia ser o minerva nesta dúvida?
Obrigado.
[/quote]
Olá você está confundindo as coisas, deixa eu te explicar:
Sobrecarga= Só ocorre quando altera a lista de argumentos, ou seja na verdade a sobrecarga sao apenas dois metodos com o mesmo nome, mas que tem parametros diferentes.
Subscrita= Ocorre quando nao altera a lista de argumentos, ou seja mantem a assinatura da classe super!
Para que ocorra sobrecarga:
[list]Os métodos sobrecarregados devem alterar a lista de argumentos[/list]
[list]Os métodos sobrecarregados podem alterar o tipo de retorno[/list]
[list]Os métodos sobrecarregados podem alterar o modificadore de acesso[/list]
Para que ocorra subscrita:
[list] A lista de argumentos deve coincidir exatamente com o o método subscrito[/list]
[list] O tipo de retorno deve ser o mesmo ou um subtipo do mesmo[/list]
[list] O nível de acesso nao pode ser mais restrito, mais pode ser mais abrangente![/list]
Dentre outras coisas, relacionados a exceções, mas basicamente eh isto!!
Qualquer dúvida, eh so falar!!