Olá devs, tudo bem?? O que seria esse elemento/propriedade constructor() e super()??? Para que serve? Como utilizar??
Olá devs, tudo bem?? O que seria esse elemento/propriedade constructor() e super()??? Para que serve? Como utilizar??
A palavra-chave super() é usada para chamar o construtor da classe pai e acessar métodos da classe pai. Ela é essencial quando você está estendendo uma classe e deseja inicializar ou modificar a classe pai a partir da classe filha.
Aqui está um exemplo:
class Animal {
constructor(nome) {
this.nome = nome;
}
falar() {
console.log(`${this.nome} faz um som.`);
}
}
class Cachorro extends Animal {
constructor(nome, raca) {
super(nome); // Chama o construtor da classe pai (Animal)
this.raca = raca;
}
falar() {
super.falar(); // Chama o método falar() da classe pai
console.log(`${this.nome} late.`);
}
}
const cachorro = new Cachorro('Rex', 'Labrador');
cachorro.falar();
No exemplo acima:
super(nome); no construtor da classe Cachorro chama o construtor da classe Animal, inicializando a propriedade nome.super.falar(); no método falar da classe Cachorro chama o método falar da classe Animal, exibindo a mensagem base antes de adicionar o comportamento específico do cachorro.Obrigado pela ajuda, mas ainda não ficou bem claro, poderia me explicar melhor ou de outra forma??
Cara, também estava com essa dúvida e andei pesquisando. Primeiro, perguntei para o ChatGPT e ele deu um exemplo semelhante ao do Edison, mas ainda não ficou muito claro para mim. Então, assisti a esta aula da Professora Juliana na Alura sobre orientação a objetos com JavaScript, e finalmente entendi melhor: Curso de JavaScript: Programação Orientada a Objetos.
Basicamente, o super() "puxa" as propriedades e métodos da classe pai. Ao invés de ter que escrever novamente this.nome = nome e outras propriedades no construtor da classe filha, você simplesmente usa super() e passa as porpriedades que você quer herdar nos parâmetros.
Quando você está herdando uma classe, é obrigatório colocar o super() dentro do método constructor() da classe filha. Isso garante que a classe filha "puxe" as propriedades e métodos da classe pai. O super() recebe como parâmetros as propriedades que você quer herdar da classe pai.
Muito obrigado, vi um vídeo que me ajudou muito também, segue o link abaixo! https://www.youtube.com/watch?v=dmqNwVvKqR4&t=267s&pp=ygUIU3VwZXIganM%3D