O que é o método super() e como usá-lo em JavaScript

O método super() é essencial para acessar métodos e propriedades da classe pai em heranças de JavaScript. Aprenda quando utilizá-lo no seu código.

O que é o método super() e quando usá-lo?

O método super() é utilizado dentro de classes filhas para acessar métodos e propriedades da classe pai. Ele é uma parte essencial do conceito de herança em JavaScript. Quando você herda de uma classe em JavaScript usando a palavra-chave extends, o super() pode ser utilizado para chamar o construtor ou outros métodos da classe base.

Como funciona o método super()?

O método super() pode ser utilizado de duas maneiras principais:

  • Chamar o construtor da classe pai
  • Chamar métodos da classe pai

Quando você usa super() em um construtor, ele chama o construtor da classe pai, permitindo que você inicialize as propriedades herdadas da classe base. Isso é particularmente útil quando você deseja que a classe filha tenha acesso a comportamentos definidos na classe pai.

Exemplo básico de uso do método super() no construtor:

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
    this.raca = raca;
  }
  latir() {
    console.log(`${this.nome} está latindo!`);
  }
}

const cachorro = new Cachorro('Rex', 'Pastor Alemão');
cachorro.falar();
cachorro.latir();

O que o código está fazendo: A classe Cachorro herda de Animal. Dentro do construtor da classe Cachorro, chamamos super(nome), que invoca o construtor da classe Animal para inicializar a propriedade nome. A classe Cachorro também define um novo método, latir(), que é exclusivo para os objetos da classe filha.

O uso de super() permite que o objeto criado com new Cachorro() tenha tanto as propriedades definidas na classe base quanto as propriedades e métodos específicos da classe filha.

Usando o método super() para chamar métodos da classe pai

Além de chamar o construtor da classe pai, o super() também pode ser utilizado para acessar métodos da classe base. Isso permite que a classe filha modifique ou expanda o comportamento da classe pai, sem precisar reescrever os métodos existentes.

Exemplo de uso de super() para chamar métodos da classe pai:

class Animal {
  falar() {
    console.log('O animal faz um som.');
  }
}

class Cachorro extends Animal {
  falar() {
    super.falar();  // Chama o método falar() da classe pai
    console.log('O cachorro late.');
  }
}

const cachorro = new Cachorro();
cachorro.falar();  // 'O animal faz um som.' 
// 'O cachorro late.'

O que o código está fazendo: Dentro do método falar() da classe Cachorro, usamos super.falar() para chamar o método falar() da classe Animal antes de adicionar um comportamento adicional (o latido do cachorro). Isso demonstra como o super() pode ser usado para invocar comportamentos da classe pai, enquanto permite que a classe filha adicione suas próprias funcionalidades.

Quando usar o método super()?

O super() deve ser usado sempre que você quiser acessar ou modificar o comportamento de métodos e propriedades da classe pai. Ele é crucial para garantir que o código de herança funcione corretamente e para promover o reuso de código. O super() é essencial em situações como:

  • Inicializar propriedades herdadas da classe base em classes filhas.
  • Acessar ou modificar métodos da classe pai dentro da classe filha.

Conclusão

O método super() é uma ferramenta poderosa na programação orientada a objetos em JavaScript, especialmente quando se trabalha com herança. Ele permite que você interaja diretamente com a classe pai, tornando o código mais modular e reutilizável. Ao entender como usar super() adequadamente, você pode escrever código mais eficiente e bem estruturado, promovendo o reuso de funcionalidades e melhorando a manutenção do código.

O uso do método super() é essencial para garantir que a herança em JavaScript funcione corretamente. Ele permite que classes filhas acessem propriedades e métodos da classe pai de forma eficiente, promovendo o reuso de código e tornando as classes mais modulares e reutilizáveis.

Algumas aplicações:

  • Inicialização de propriedades herdadas com super() em construtores de classes filhas.
  • Expansão de métodos da classe pai usando super() para manter a funcionalidade da classe base e adicionar novos comportamentos.
  • Reuso de código comum entre várias classes filhas, facilitando a manutenção e evolução do sistema.

Dicas para quem está começando

  • Pratique criando classes base e derivadas, usando super() para acessar e modificar propriedades da classe pai.
  • Comece usando super() para chamar o construtor da classe pai, depois experimente chamar métodos com super() para entender como ele funciona.
  • Evite duplicação de código em classes filhas, utilizando super() sempre que necessário para reusar código da classe pai.
Foto de Andressa Maria
Contribuições de
Andressa Maria

Desenvolvedora sênior com forte atuação em PHP, JavaScript e tecnologias de backend.

Mais sobre o autor
Compartilhe este tutorial: O que é o método super() e quando usá-lo?

Compartilhe este tutorial

Continue aprendendo:

O que é herança em JavaScript e como implementá-la?

Entenda o conceito de herança em JavaScript, como ela pode ser aplicada em classes e os benefícios dessa abordagem para a organização do código.

Tutorial anterior

Qual a diferença entre Object.create() e new Class()?

Descubra as principais diferenças entre os métodos Object.create() e new Class(), e como usar cada um para criar objetos e implementar herança.

Próximo tutorial