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:
public class Casa {
public void abrirPorta() {
System.out.println("Minha casinhza");
}
}
public class Mansao extends Casa {
public void abrirPorta(String chave) {
System.out.println("Abri minha casinha com chave " + chave);
}
}
public class Construtora {
public static void main(String[] args) {
Mansao minha = new Mansao();
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”.
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.
[quote=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.[/quote]
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.
[quote=JavaFXMan][quote=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.[/quote]
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?
[/quote]
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.
[quote=JavaFXMan][quote=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.[/quote]
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.
[quote=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.[/quote]
Quando há herança, os métodos estão na mesma classe sim. Não visivelmente, mas estão pela lógica OO…
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
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.