Sobes.tech
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
    }
}