Pessoal gostaria de saber qual a diferença entre override e overload e se só existe override juntamente com herança?
Valeu!!!
Pessoal gostaria de saber qual a diferença entre override e overload e se só existe override juntamente com herança?
Valeu!!!
Use a busca antes de perguntar.
Boa noite Rhyan.
Em primeiro lugar, a palavra grega “Polimorfismo” significa várias formas em português. Em outras palavras, o conceito de polimorfismo indica as várias formas que vários objetos se comportam mesmo sendo todos eles oriundo de uma mesma classe, resumindo uma única classe pode dar origem a vários objetos cujos os comportamentos (métodos) podem ter implementações diferentes.
Uê, uma única classe pode instanciar vários objetos com métodos diferentes, como é isso :?: :?: :?:
E ai que entra o Overload e o Override.
1º) Overload, palavra inglesa que em português significa sobrecarga. A sobrecarga de métodos consiste em voce declarar vários métodos em uma única classe ou em classes descendentes, com o mesmo nome, porém eles tem que ter assinaturas diferentes. A assinatura do método é o escopo do método identificado pelo seu retorno, pelo seu nome, bem como o recebimento ou não de seus parâmetros. Vamos ao exemplo:
public class Teste {
public void fazAlgo() {
System.out.println("Este método não recebe parâmetro);
}
public void fazAlgo(String mensagem) {
System.out.println("Mensagem");
}
}
Repare que os métodos da classe Teste, tem o mesmo nome, porém eles serão identificados no momento de serem invocados, pela sua assinatura, ou seja a passagem de parâmetros ou não passagem de parâmetros.
Como disse antes, a sobrecarga de métodos voce pode fazer tanto na mesma classe, como também nas classes herdadas, bastando tão somente voce saber qual é a assinatura do método da super classe para poder sobrecarregá-lo.
2º) Override, palavra inglesa que significa “Sobrescrita” em português. A sobrescrita somente é possível em classes herdadas, isto porque este conceito significa o que o próprio nome já diz, ou seja, substituir um método da super classe na sub classe sobrescrevendo-o (substituindo-o) o mesmo. Vamos ao exemplo.
public class Teste {
public void fazAlgo() {
System.out.println("Este é o método da super classe");
}
}
public class NovoTeste extends Teste {
@Override
public void fazAlgo() {
System.out.println("Este é o método foi sobrescrito");
}
}
Repare que na sub classe NovoTeste eu estou substituindo o método fazAlgo da super classe, isto porque, se eu não o sobrescrevesse, ele iria herdar o método fazAlgo() da super classe, e neste caso ele passa a ter o método com o mesmo nome e mesma assinatura só que com implementação nova na sub classe.
A sintaxe “@Override” é uma diretiva de compilação, que orienta o compilador que as linhas abaixo de sua declaração contém um método igual da super classe que deverá ser substituído.
Como disse antes, a sobrescrita só é permitida em classes herdadas, isto pois, métodos com a mesma assinatura e nomes iguais não podem ter na mesma classe.
Valendo lembrar que se voce instanciar um objeto do tipo da super ele enxerga apenas o seu método faz algo, vamos ao exemplo.
public class Teste {
public void fazAlgo() {
System.out.println("Este é o método da super classe");
}
}
public class NovoTeste extends Teste {
@Override
public void fazAlgo() {
System.out.println("Este é o método foi sobrescrito");
}
}
public static void main(String args[]){
Teste T = new Teste();
T.fazAlgo(); // Retorna "Este é o método da super classe"
TesteNovo = TN = new TesteNovo();
TN.fazAlgo(); // Retorna "Este método foi sobrescrito"
}
O porque que não existe a diretiva @Overload (Sobrecarga) no Java :?: :?: :?:
Simples, o compilador javac consegue identificar métodos cujas as assinaturas são diferentes, porém não conseguem identificar os com asssinaturas iguais, daí a necessidade da sintaxe “@Override”.
Cappichi 8) :lol:
O problema do termo “polimorfismo” é que ele pode ser usado para definir tanto sobrecarga quando sobreposição, quanto outras formas de polimorfismo não existentes no Java (as macros do lisp e as templates do C#, para citar 2 exemplos). Entretanto, na comunidade java, referimos como polimorfismo apenas a definição dada pelo discorpio.
Obrigado discorpio, sua explicação foi excelente!!
Parabéns!!