Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dificuldade com Métodos Abstratos

Não estou conseguindo entender os métodos abstratos: como se usa, para que serve.

1 resposta
solução!

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.
*/