Polimorfismo
Polimorfismo é um dos princípios fundamentais da programação orientada a objetos. Refere-se à capacidade de um objeto ou função se comportar de maneiras diferentes com base no contexto em que é usado. Em outras palavras, objetos de diferentes classes podem ser tratados como objetos da mesma classe base em programação orientada a objetos.
Em JavaScript, o polimorfismo é facilitado devido à sua natureza dinâmica e ao uso de protótipos. Vou mostrar um exemplo simples usando JavaScript:
class Animal {
fazerBarulho() {
console.log("Barulho genérico de animal");
}
}
class Cachorro extends Animal {
fazerBarulho() {
console.log("Latido de cachorro");
}
}
class Gato extends Animal {
fazerBarulho() {
console.log("Miado de gato");
}
}
function fazerBarulhoDoAnimal(animal) {
animal.fazerBarulho();
}
let cachorro = new Cachorro();
let gato = new Gato();
fazerBarulhoDoAnimal(cachorro); // Saída: "Latido de cachorro"
fazerBarulhoDoAnimal(gato); // Saída: "Miado de gato"
Neste exemplo, temos três classes: Animal
, Cachorro
, e Gato
. Ambas Cachorro
e Gato
estendem a classe Animal
. O método fazerBarulhoDoAnimal
aceita um objeto Animal
como parâmetro e chama fazerBarulho
do objeto passado. Quando você passa um objeto Cachorro
, ele chama o método fazerBarulho
da classe Cachorro
, e o mesmo vale para Gato
.
O polimorfismo permite que você escreva código que funcione com objetos de uma classe base (Animal
, neste caso) e, ao mesmo tempo, seja capaz de lidar com objetos derivados (Cachorro
, Gato
, etc.) sem saber qual objeto específico está sendo tratado. Isso promove a reutilização de código e flexibilidade no design de software.