Não estou conseguindo entender os métodos abstratos: como se usa, para que serve.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.
*/