Menu
Coddy logo textTech

Herdando propriedades e métodos

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

Quando uma classe estende outra classe, ela herda todas as propriedades e métodos da classe pai. Isso significa que as classes filhas têm acesso automático a tudo o que foi definido na classe pai.

Vamos criar uma classe pai com propriedades e métodos:

class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  eat() {
    return `${this.name} is eating`;
  }
  
  sleep() {
    return `${this.name} is sleeping`;
  }
}

Agora, vamos criar uma classe filha que herda de Animal:

class Dog extends Animal {
  constructor(name, age, breed) {
    super(name, age);
    this.breed = breed;
  }
}

Crie uma instância da classe Dog:

const rex = new Dog("Rex", 3, "German Shepherd");

Agora, embora não tenhamos definido eat() e sleep() na classe Dog, ainda podemos usar esses métodos:

console.log(rex.eat());  // Saída: Rex is eating
console.log(rex.sleep()); // Saída: Rex is sleeping

E podemos acessar todas as propriedades herdadas:

console.log(rex.name);  // Saída: Rex
console.log(rex.age);   // Saída: 3
console.log(rex.breed); // Saída: German Shepherd
challenge icon

Desafio

Crie uma classe Cake que estenda Dessert e exporte-a. O Cake deve ter:

  • Todas as propriedades e métodos herdados de Dessert
  • Uma nova propriedade flavor
  • Um novo método addCandles() que retorna uma string “Added candles to ${this.name}!”

Folha de consulta

Classes filhas herdam todas as propriedades e métodos de sua classe pai usando a palavra-chave extends:

class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  eat() {
    return `${this.name} is eating`;
  }
  
  sleep() {
    return `${this.name} is sleeping`;
  }
}

class Dog extends Animal {
  constructor(name, age, breed) {
    super(name, age);
    this.breed = breed;
  }
}

const rex = new Dog("Rex", 3, "German Shepherd");
console.log(rex.eat());  // Rex is eating
console.log(rex.name);   // Rex
console.log(rex.breed);  // German Shepherd

A classe filha pode acessar todas as propriedades e métodos herdados sem redefini-los.

Experimente você mesmo

import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';

// Código de teste - não modifique
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe());   // Deve exibir "Birthday Cake has 300 calories"
console.log(myCake.flavor);       // Deve exibir "Chocolate"
console.log(myCake.addCandles()); // Deve exibir "Added candles to Birthday Cake!"
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