Ao extends de uma classe mãe, eu sempre tenho que usar no constructor todas as propriedades da classe mãe ? E em super eu adiciono somente o que vou usar na classe filha ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Ao extends de uma classe mãe, eu sempre tenho que usar no constructor todas as propriedades da classe mãe ? E em super eu adiciono somente o que vou usar na classe filha ?
Olá, Isabela! Tudo bem?
Peço desculpa pela demora para responder o seu tópico.
Quando você estende uma classe mãe em uma classe filha, você tem acesso a todas as propriedades e métodos da classe mãe. No entanto, você não é obrigada a utilizar todas as propriedades no constructor da classe filha. Você pode escolher quais propriedades da classe mãe serão utilizadas na classe filha e adicionar somente essas no constructor.
Já no super, você deve passar todas as propriedades que serão utilizadas na classe filha que foram herdadas da classe mãe. O super é utilizado para chamar o constructor da classe mãe e passar os parâmetros necessários para que as propriedades sejam inicializadas corretamente.
Por exemplo:
class Mae {
constructor(propriedade1, propriedade2) {
this.propriedade1 = propriedade1;
this.propriedade2 = propriedade2;
}
}
class Filha extends Mae {
constructor(propriedade1) {
super(propriedade1, 'valor2');
this.propriedade3 = 'valor3';
}
}
const objeto = new Filha('valor1');
console.log(objeto.propriedade1); // valor1
console.log(objeto.propriedade2); // valor2
console.log(objeto.propriedade3); // valor3
Nesse exemplo, a classe Filha estende a classe Mae e utiliza somente a propriedade1 da classe mãe. No super, é passado o valor de propriedade1 e um valor fixo para propriedade2. Na classe Filha, é adicionada a propriedade3.
Espero ter conseguido esclarecer a sua dúvida. Caso tenha mais dúvidas, com relação a este tópico, estarei à disposição para ajudá-la.
Grande abraço e bons estudos!