Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

SUPER()?

Olá devs, tudo bem?? O que seria esse elemento/propriedade constructor() e super()??? Para que serve? Como utilizar??

4 respostas

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??

solução!

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