É correto afirmar que só haverá o polimorfismo se houver a herança?
É correto afirmar que só haverá o polimorfismo se houver a herança?
Também pode ocorrer com classes que implementam interfaces
Não Márcio. Como disse o Christian, uma interface pode não ter uma implementação concreta e ser utilizada!
Por exemplo:
private Collection<Aula> aulas;
public void testePolimorfismo() {
aulas = new ArrayList<>();
aulas = new LinkedList<>();
aulas = new HashSet<>();
}
Existem dois tipos de polimorfismo.
Polimorfismo de Sobrecargar - Metodos com assinaturas diferentes.
public class Calculadora {
// Metódos com mesmo nomes, porém a maneira que ele se comporta ira depender dos parametros passados. Se for passado dois inteiros sera executado o primeiro, se for passado 2 double sera executado o 2.
public int somar(int valor1, int valor 2){
return valor1 + valor2;
}
public double somar(double valor1, double valor2){
return vamor1+valor2;
}
}
E o polimorfismo que você citou que é o de sobreescrita de metódos de herança/classe abstrata/interface
public interface Calculadora{
public double somar(int valor1, int valor2);
}
public class CalculadoraCientifica implements Calculadora {
@Override
public double somar(int valor1, int valor2) {
return valor1+valor2;
}
}
Boa tarde Marcio.
O conceito de herança é uma classe filha herdar atributos e comportamentos da classe mãe.
O polimorfismo na herança é a capacidade de um objeto de classes filhas poderem ser referenciados pela classe mãe.
Não é a única forma, conforme dito acima. Há também classes que implementam interfaces, e objetos dessas classes podem ser referenciados pelas interfaces que elas implementam.
Polimorfismo é uma mudança de comportamento em classes descendentes, sendo que o comportamento inicial não necessariamente precisa estar definido.
Obrigado a todos pelas explicações.