1
resposta

Constructor x Super : Herança de Classes

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 ?

1 resposta

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.