0Pricing
JavaScript Academy · Lección

Herencia, super y cuándo preferir la composición

Extienda una clase base con extends, llame a super en los constructores, sobrescriba métodos de forma segura y sepa cuándo es mejor una composición sencilla.

Herencia, super y cuándo preferir la composición es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 3 lecciones en total.

Panorama general

Objetivo: Usar la herencia básica sin confusiones.

  • extends crea una clase hija
  • super(...) llama al constructor de la clase padre
  • sobrescriba un método; opcionalmente, llame a super.method()
  • Si no se trata de una relación «is-a», prefiera la composición
Herencia, super y cuándo preferir la composición — ilustración 1

extends + super

Cree una clase hija con extends; llame a super(name) para ejecutar el constructor de la clase padre y configurar this.

// Base class with a small field and method
class Animal {
  constructor(name) {
    this.name = name;
  }
  info() {
    return "Animal:" + this.name;
  }
}

// Child class extends the base and calls super(...)
class Dog extends Animal {
  constructor(name, breed) {
    // must call super() before using this
    super(name);
    this.breed = breed;
  }
  speak() {
    return "woof";
  }
}

const d = new Dog("Milo", "Beagle");
console.log(d.info(), d.speak());
Herencia, super y cuándo preferir la composición — ilustración 2

Sobrescritura de métodos

Al sobrescribir un método, puede llamar a super.method() para reutilizar la lógica base y después añadir su modificación.

// Override a method; keep parent behavior with super.method()
class Button {
  click() {
    return "base-click";
  }
}

class IconButton extends Button {
  click() {
    // call parent behavior, then add something
    const base = super.click();
    return base + "+icon";
  }
}

const b = new IconButton();
console.log(b.click()); // "base-click+icon"
Herencia, super y cuándo preferir la composición — ilustración 3

Prefiera la composición cuando sea has-a

Si la relación es has-a (usa una utilidad), prefiera la composición frente a la herencia para mantener las clases sencillas.

// Composition: use a helper object instead of extending
class Logger {
  log(msg) {
    console.log("[log]", msg);
  }
}

class Player {
  constructor(name, logger) {
    this.name = name;
    this.logger = logger; // has-a logger
  }
  score(points) {
    this.logger.log(this.name + " +" + points);
  }
}

const logger = new Logger();
const p = new Player("Ayla", logger);
p.score(5);
Herencia, super y cuándo preferir la composición — ilustración 4

is-a frente a has-a

La herencia modela una relación is-a: un Dog es un Animal. La composición se utiliza para las utilidades has-a.

// Use instanceof for a quick is-a check
console.log("Dog is Animal?", d instanceof Animal);
console.log("Player is Animal?", p instanceof Animal);
Herencia, super y cuándo preferir la composición — ilustración 5

Hábitos para principiantes

Consejos:

  • Mantenga las jerarquías poco profundas para principiantes.
  • Llame primero a super(...) en los constructores de las subclases.
  • Sobrescriba solo lo necesario; reutilice la lógica con super.method().
  • Prefiera la composición para utilidades y funcionalidades transversales.
Herencia, super y cuándo preferir la composición — ilustración 6

Cuestionario sobre los fundamentos de super(...)

Comprobación rápida: super en el constructor de una subclase.

Herencia, super y cuándo preferir la composición — ilustración 7

Resumen

Resumen: Use extends para relaciones realmente is-a, llame pronto a super(...), sobrescriba con cuidado (llame a super.method() cuando sea útil) y prefiera la composición para las utilidades.

Herencia, super y cuándo preferir la composición — ilustración 8

Preguntas frecuentes

¿La lección «Herencia, super y cuándo preferir la composición» es gratis?

Sí — el texto completo de «Herencia, super y cuándo preferir la composición» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Herencia, super y cuándo preferir la composición»?

Extienda una clase base con extends, llame a super en los constructores, sobrescriba métodos de forma segura y sepa cuándo es mejor una composición sencilla. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar JavaScript Academy?

No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.

¿Cuánto tiempo toma la lección «Herencia, super y cuándo preferir la composición»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?

Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Campos de clase, campos privados # y miembros static
  2. Herencia, super y cuándo preferir la composición
  3. Mixins (introducción): reutilización sencilla sin jerarquías profundas
← Volver a JavaScript Academy