Menu
Coddy logo textTech

Sobrescrevendo Métodos Herdados

Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 36 de 56.

A sobrescrita de método (method overriding) ocorre quando uma classe filha fornece sua própria implementação de um método que ela herdou de uma classe pai. A versão da classe filha "sobrescreve" (substitui) a versão da classe pai.

Exemplo Simples:

Crie uma classe pai com um método:

class Vehicle {
  start() {
    return "Vehicle starting...";
  }
}

Crie uma classe filha que estende a classe pai:

class Car extends Vehicle {
  // Isso SOBRESCREVE o método start() de Vehicle
  start() {
    return "Car engine roaring to life!";
  }
}

Use as classes:

const vehicle = new Vehicle();
const car = new Car();

console.log(vehicle.start());      // "Vehicle starting..." (original)
console.log(car.start());          // "Car engine roaring to life!" (sobrescrito)

Regras Principais para Sobrescrita:

  1. Mesmo nome de método que o pai
  1. Parâmetros iguais ou compatíveis
  1. A versão do filho é chamada em objetos filhos
  1. Sem necessidade de palavras-chave especiais - apenas defina o método
challenge icon

Desafio

Você recebeu uma classe pai Shape e uma classe filha Circle. A classe pai possui um método calculateArea() que retorna 0.

Sua tarefa é sobrescrever o método calculateArea() na classe Circle para calcular a área real de um círculo.

A fórmula para a área do círculo é: π × raio²
Em JavaScript: Math.PI * this.radius * this.radius

Folha de consulta

A sobrescrita de método (method overriding) ocorre quando uma classe filha fornece sua própria implementação de um método herdado de uma classe pai. A versão da filha substitui a versão da pai.

Exemplo:

class Vehicle {
  start() {
    return "Vehicle starting...";
  }
}

class Car extends Vehicle {
  // Sobrescreve o método start() de Vehicle
  start() {
    return "Car engine roaring to life!";
  }
}

const vehicle = new Vehicle();
const car = new Car();

console.log(vehicle.start());  // "Vehicle starting..."
console.log(car.start());      // "Car engine roaring to life!"

Regras Principais:

  • Use o mesmo nome de método que o pai
  • Use parâmetros iguais ou compatíveis
  • A versão da filha é chamada em objetos da filha
  • Nenhuma palavra-chave especial é necessária - basta definir o método na classe filha

Experimente você mesmo

import { Shape } from './shapes.js';
import { Circle } from './shapes.js';

// Teste sua implementação
const myCircle = new Circle(5);
console.log(myCircle.calculateArea());
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos