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