Explique o que é o polimorfismo. Cite dois exemplos.
Passo 1
O enunciado pede para explicar o que é polimorfismo na programação orientada a objetos e citar dois exemplos. Para isso, vamos primeiro definir o conceito de forma clara e, em seguida, mostrar dois casos práticos que ilustram polimorfismo em ação.
Passo 2
Polimorfismo é um princípio de programação orientada a objetos que permite que objetos de classes diferentes sejam tratados através de uma interface comum. Na prática, isso significa que o mesmo nome de método ou operador pode se comportar de maneiras distintas dependendo do objeto que o invoca.
Passo 3
Exemplo 1 – Polimorfismo em tempo de compilação (sobrecarga de método):
Em muitas linguagens, podemos definir várias versões de um mesmo método com assinaturas diferentes (número ou tipo de parâmetros). O compilador escolhe qual versão chamar com base nos tipos dos argumentos. Por exemplo, uma classe
Em muitas linguagens, podemos definir várias versões de um mesmo método com assinaturas diferentes (número ou tipo de parâmetros). O compilador escolhe qual versão chamar com base nos tipos dos argumentos. Por exemplo, uma classe
Calculadora pode ter:int soma(int a, int b) // soma de dois inteiros
double soma(double x, double y) // soma de dois reais
Aqui, o método
soma tem comportamento distinto dependendo dos parâmetros, mas mantém o mesmo nome.Passo 4
Exemplo 2 – Polimorfismo em tempo de execução (sobrescrita de método):
Imagine uma classe base
Imagine uma classe base
Animal com um método emitirSom(), e duas classes filhas Cachorro e Gato que estendem Animal:class Animal {
void emitirSom() {
System.out.println("Som genérico");
}
}
class Cachorro extends Animal {
@Override
void emitirSom() {
System.out.println("Au au");
}
}
class Gato extends Animal {
@Override
void emitirSom() {
System.out.println("Miau");
}
}
Se tivermos
Animal a\(1=\) new Cachorro();
Animal a\(2=\) new Gato();
a1.emitirSom(); // imprime "Au au"
a2.emitirSom(); // imprime "Miau"
o método chamado depende da classe concreta do objeto em tempo de execução.
Resposta
Polimorfismo é a capacidade de usar uma mesma interface (nome de método ou operador) para comportamentos diferentes conforme o tipo do objeto. Dois exemplos são:
(a) sobrecarga de método (polimorfismo em tempo de compilação) e
(b) sobrescrita de método (polimorfismo em tempo de execução).
(a) sobrecarga de método (polimorfismo em tempo de compilação) e
(b) sobrescrita de método (polimorfismo em tempo de execução).