Não estou conseguindo entender os métodos abstratos: como se usa, para que serve.
Não estou conseguindo entender os métodos abstratos: como se usa, para que serve.
Métodos Abstratos servem para que sempre que uma classe filha herde de uma classe pai, ela seja obrigada a sobrescrever o método original da classe pai.
class Animal {
fazerBarulho(){
throw new Error('Esse metodo precisa ser implementado !');
}
}
class Cachorro extends Animal{
}
class Gato extends Animal{
}
Note que agora tanto Cachorro como Gato tem o metodo fazerBarulho, mas se voce tentar executar:
let cachorro = new Cachorro();
cachorro.fazerBarulho();
**[Uncaught Error: Esse metodo precisa ser implementado !]**
Logo, de certa forma, forçamos a todo mundo que seja um animal implemente a função fazerBarulho, porque na nossa abstração, todo animal faz algum barulho certo?!
Então para funcionar teriamos que fazer o seguinte:
class Cachorro extends Animal{
fazerBarulho(){
console.log("au au");
}
}
class Gato extends Animal{
fazerBarulho(){
console.log("miau miau");
}
}
Você pode também fazer o uso dos metodos abstratos para receber qualquer tipo de animal que faça barulho exemplo:
function pegaAnimal(animal){
animal.fazerBarulho();
}
let cachorro = new Cachorro();
let gato = new Gato();
pegaAnimal(cachorro); // a saida da função vai ser au au
pegaAnimal(gato); // a saida da função vai ser miau miau
/*
repare que seja la qual for o animal, garantindo que ele implemente o metodo fazerBarulho,
vamos poder passar como parametro de qualquer função um animal genérico, que pode ser:
um gato, um cachorro, um pato, ou qualquer coisa que herde de animal e implemente o metodo
fazerBarulho.
*/