O que são herança e polimorfismo no contexto dos tipos de dados de referência?
sobes.tech IA
Resposta da IA
A herança é um mecanismo que permite criar uma nova classe (derivada, filha), que herda os campos e métodos de uma classe existente (base, 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 de se comportarem de forma uniforme ou de terem comportamentos diferentes ao invocar o mesmo método. Existem dois tipos principais: estático (sobrecarga de métodos) e dinâmico (sobrescrita de métodos).
No contexto de tipos de dados de referência, a herança permite criar uma variável da classe base que pode referenciar um objeto da classe derivada. O polimorfismo neste caso manifesta-se quando, ao chamar um método através dessa variável, a versão do método do tipo real do objeto é executada, não do tipo da referência (polimorfismo dinâmico).
Exemplo em Java:
// Classe base
class Animal {
public void makeSound() {
System.out.println("Emite um som");
}
}
// Classe derivada 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Au-au");
}
}
// Classe derivada 2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau-miau");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Variável do tipo Animal referenciando um objeto Dog
Animal myCat = new Cat(); // Variável do tipo Animal referenciando um objeto Cat
myDog.makeSound(); // Chama o método de Dog (polimorfismo)
myCat.makeSound(); // Chama o método de Cat (polimorfismo)
}
}
Neste exemplo, myDog e myCat têm tipo de referência Animal, mas graças ao polimorfismo, ao chamar makeSound(), a implementação correspondente de Dog e Cat é executada.