Menu
Coddy logo textTech

Heredar propiedades y métodos

Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy — lección 28 de 56.

Cuando una clase extiende a otra clase, hereda todas las propiedades y métodos de la clase padre. Esto significa que las clases hijas tienen acceso automáticamente a todo lo definido en la clase padre.

Vamos a crear una clase padre con propiedades y 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`;
  }
}

Ahora, vamos a crear una clase hija que herede de Animal:

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

Crea una instancia de la clase Dog:

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

Ahora, aunque no definimos eat() y sleep() en la clase Dog, todavía podemos usar estos métodos:

console.log(rex.eat());  // Salida: Rex is eating
console.log(rex.sleep()); // Salida: Rex is sleeping

Y podemos acceder a todas las propiedades heredadas:

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

Desafío

Crea una clase Cake que extienda a Dessert y expórtala. El Cake debe tener:

  • Todas las propiedades y métodos heredados de Dessert
  • Una nueva propiedad flavor
  • Un nuevo método addCandles() que devuelve una cadena “Added candles to ${this.name}!”

Hoja de referencia

Las clases hijas heredan todas las propiedades y métodos de su clase padre utilizando la palabra clave 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

La clase hija puede acceder a todas las propiedades y métodos heredados sin necesidad de volver a definirlos.

Pruébalo tú mismo

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

// Código de prueba - no modificar
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe());   // Debería mostrar "Birthday Cake has 300 calories"
console.log(myCake.flavor);       // Debería mostrar "Chocolate"
console.log(myCake.addCandles()); // Debería mostrar "Added candles to Birthday Cake!"
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos