Métodos implementados após herança com assinatura diferente é Override ou Overload?
11 respostas
gedalias
Olá brothers,
Estamos discuntindo em nosso grupo de estudos, se um método que foi herdado e implementado na classe filha com assinatura diferente é Override ou Overload.
Como no exemplo abaixo:
publicclassCasa{publicvoidabrirPorta(){System.out.println("Minha casinhza");}}publicclassMansaoextendsCasa{publicvoidabrirPorta(Stringchave){System.out.println("Abri minha casinha com chave "+chave);}}publicclassConstrutora{publicstaticvoidmain(String[]args){Mansaominha=newMansao();minha.abrirPorta();minha.abrirPorta("mestra");}}
Na minha opinião até aqui é que é overload, dado que a classe Mansao, apos a heranca, possui 2 métodos implementados de forma diferente e os mesmos podem ser acessados de forma diferente.
Mas acabar com dúvidas de amigos, preciso da opinião dos “Universitários”.
Meu querido, mudança de assinatura OVERLOAD ou sobreposição, quando a assinatura é a mesma chama-se OVERRIDE ou sobrescrita.
Simples assim…
Na verdade existem mais detalhes mas o principal é este.
B
Bruno_Laturner
Overload = sobrecarregamento
Overriding = sobreposição ou sobreescrita
Bem, sobreescrita não é, pois as assinaturas dos métodos são diferentes. Mansao não troca os métodos de Casa.
Não sei se consideraria isso sobrecarregamento de método, já que os métodos não estão na mesma classe, mas como no final das contas o resultado é o mesmo.
JavaFXMan
Bruno Laturner:
Overload = sobrecarregamento
Overriding = sobreposição ou sobreescrita
Bem, sobreescrita não é, pois as assinaturas dos métodos são diferentes. Mansao não troca os métodos de Casa.
Não sei se consideraria isso sobrecarregamento de método, já que os métodos não estão na mesma classe, mas como no final das contas o resultado é o mesmo.
Como assim não estão na mesma classe? Apartir do momento que foi feitas a herança, o método abrirPorta() pertece agora à classe Mansao. Agora temos dois métodos com o mesmo nome na mesma classe. Isso caracteriza uma sobrecarga, overload.
ou não?
B
BrunoCarlo
JavaFXMan:
Bruno Laturner:
Overload = sobrecarregamento
Overriding = sobreposição ou sobreescrita
Bem, sobreescrita não é, pois as assinaturas dos métodos são diferentes. Mansao não troca os métodos de Casa.
Não sei se consideraria isso sobrecarregamento de método, já que os métodos não estão na mesma classe, mas como no final das contas o resultado é o mesmo.
Como assim não estão na mesma classe? Apartir do momento que foi feitas a herança, o método abrirPorta() pertece agora à classe Mansao. Agora temos dois métodos com o mesmo nome na mesma classe. Isso caracteriza uma sobrecarga, overload.
ou não?
Ola,
Eu pessoalmente considero que sim, isto caracteriza uma overload, mas há ramos que não consideram…
Mas respondendo a pergunta original, override não é, pq não houve de forma alguma a sobrescrita de metodos… então é overload.
P
pango
JavaFXMan:
Bruno Laturner:
Overload = sobrecarregamento
Overriding = sobreposição ou sobreescrita
Bem, sobreescrita não é, pois as assinaturas dos métodos são diferentes. Mansao não troca os métodos de Casa.
Não sei se consideraria isso sobrecarregamento de método, já que os métodos não estão na mesma classe, mas como no final das contas o resultado é o mesmo.
Como assim não estão na mesma classe? Apartir do momento que foi feitas a herança, o método abrirPorta() pertece agora à classe Mansao. Agora temos dois métodos com o mesmo nome na mesma classe. Isso caracteriza uma sobrecarga, overload.
ou não?
Claro que sim.
J
juniorfreire
Primeiramente o que e heranca para vc, depois que entender heranca e polimorfismo entao entende o que e override e overload
gedalias
Bruno Laturner:
Não sei se consideraria isso sobrecarregamento de método, já que os métodos não estão na mesma classe, mas como no final das contas o resultado é o mesmo.
Quando há herança, os métodos estão na mesma classe sim. Não visivelmente, mas estão pela lógica OO…
gedalias
Encontrei a resposta no docs do Java, no tópico Classe, no ítem 8.4.7 Overloading.
Então tudo bem, já imaginava que tinham uma definição ampla dessas.
MarcioCasteloBranco
Este tópico e muito interessante, contudo minha duvida é esta, um método para ser sobrecarregado(overload) tem que possuir nomes iguais, porem lista de argumentos diferentes então no meu entendimento, o que foi feito no método abriPorta não é nem sobrecarga muito menos sobrepor(@override).
Gostaria de outras opiniões.
Vlw
davidbuzatto
Mansao herda “public void abrirPorta()”, sendo assim a clase TEM esse método. Pelo exposto, “public void abrirPorta(String)” é sobrecarga, pois já existe um método com o nome abrirPorta.