Sobes.tech
Junior

O que é herança e polimorfismo em tipos de dados de referência?

sobes.tech IA

Resposta da IA

A herança é um mecanismo que permite a uma classe (classe filha, classe derivada) herdar propriedades e comportamentos de outra classe (classe base, classe pai). Isto promove a reutilização de código e a criação de hierarquias de classes.

O polimorfismo é a capacidade de objetos de diferentes classes responderem de forma diferente à mesma mensagem (chamada de método), dependendo do seu tipo concreto. No contexto da herança, isto muitas vezes manifesta-se através da sobrescrita de métodos da classe base na classe derivada.

Exemplo (Java):

// Classe base
class Animal {
    public void makeSound() {
        System.out.println("O animal faz um som");
    }
}

// Classe derivada
class Dog extends Animal {
    @Override // Sobrescrita do método
    public void makeSound() {
        System.out.println("Au au!");
    }
}

// Classe derivada
class Cat extends Animal {
    @Override // Sobrescrita do método
    public void makeSound() {
        System.out.println("Miau!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Objeto Dog, mas referência de tipo Animal
        Animal myCat = new Cat(); // Objeto Cat, mas referência de tipo Animal

        myDog.makeSound(); // Chama o método de Dog
        myCat.makeSound(); // Chama o método de Cat
    }
}

Neste exemplo:

  • Herança: As classes Dog e Cat herdam de Animal.
  • Polimorfismo: As variáveis myDog e myCat referenciam objetos Dog e Cat respetivamente, embora tenham o tipo Animal. Ao chamar makeSound(), o método do objeto é executado, não o do tipo da referência.