Junior
Qual é a diferença entre herança e polimorfismo?
sobes.tech IA
Resposta da IA
A herança é um mecanismo que permite a uma classe (subclasse, classe derivada) herdar campos e métodos de outra classe (superclasse, classe base). Isto promove a reutilização de código.
O polimorfismo é a capacidade de usar uma mesma interface para representar diferentes formas básicas. No contexto do Java, isso significa que uma variável de tipo referência pode referir-se a um objeto do seu próprio tipo ou a um objeto de qualquer um dos seus subtipos. Distingue-se o polimorfismo em tempo de compilação (sobrecarga de métodos) e em tempo de execução (sobrescrita de métodos).
A principal diferença:
- Herança define relações entre classes (pai-filho) e permite reutilizar código.
- Polimorfismo permite aceder a diferentes objetos através de uma interface comum, executando o método correspondente dependendo do tipo real do objeto em tempo de execução.
Exemplo de polimorfismo em tempo de execução:
class Animal {
public void sound() {
System.out.println("O animal faz um som");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Au-au");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Miau-miau");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Polimorfismo: variável do tipo Animal que referencia um objeto Dog
Animal myCat = new Cat(); // Polimorfismo: variável do tipo Animal que referencia um objeto Cat
myDog.sound(); // Chama o método sound() da classe Dog
myCat.sound(); // Chama o método sound() da classe Cat
}
}