Gente, me desculpe, mas estou sentido uma tremenda dificuldade nesse curso. As aulas estão muito aceleradas e está sendo pouco explicado as ferramentas. Alguém poderia me detalhar melhor sobre o 'extends' e o 'super'? Agradeço.
Gente, me desculpe, mas estou sentido uma tremenda dificuldade nesse curso. As aulas estão muito aceleradas e está sendo pouco explicado as ferramentas. Alguém poderia me detalhar melhor sobre o 'extends' e o 'super'? Agradeço.
Olá, Patrick!
Vamos lá, o extends
e o super
são conceitos de herança em JavaScript, que é um dos pilares da programação orientada a objetos.
O extends
é usado para criar uma classe filha de outra classe. No exemplo da aula, a classe Mago
é uma classe filha da classe Personagem
. Isso significa que Mago
herda todas as propriedades e métodos de Personagem
.
export class Mago extends Personagem {
// propriedades e métodos de Mago
}
Já o super
é usado para chamar o construtor da classe pai. No exemplo da aula, ele é usado para passar os parâmetros nome
e level
para o construtor da classe Personagem
. Isso é necessário porque Mago
é uma classe filha de Personagem
e precisa desses dados para ser construída corretamente.
constructor(nome, level, elementoMagico, levelMagico, inteligencia) {
super(nome, level)
this.elementoMagico = elementoMagico
this.levelMagico = levelMagico
this.inteligencia = inteligencia
}
Nesse trecho de código, super(nome, level)
está chamando o construtor da classe Personagem
e passando os parâmetros nome
e level
para ele. As outras propriedades (elementoMagico
, levelMagico
, inteligencia
) são específicas da classe Mago
.
A título de curiosidade deixo a documentação que pode clarear mais a explicação:
Espero que essa explicação tenha esclarecido um pouco mais sobre o extends
e o super
.
Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!
Sucesso ✨
Um grande abraço e até mais!