Angular Academy · Lección

Composición frente a herencia

Preferir la composición para compartir comportamientos

Lección 4 de 413 pasos

Composición frente a herencia es una lección gratuita de Angular Academy en CoddyKit. Esta es la lección 4 de 4. 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 Angular Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Angular Academy incluye 4 lecciones en total.

Dos estrategias de reutilización

Para compartir comportamientos entre componentes, puede usar la herencia (extender una clase base) o la composición (combinar piezas más pequeñas). La API de composición de Angular hace que la composición sea la opción predeterminada recomendada.

Resumen de la herencia

Con la herencia, un componente extiende un componente o una directiva base y reutiliza sus inputs, outputs y lógica.

export class FancyButton extends BaseButton {
  // inherits BaseButton members
}

Limitaciones de la herencia

Una clase solo puede extender una base. Las jerarquías profundas se vuelven rígidas y se hereda todo, incluso las partes que no desea.

El problema del diamante

Combinar varios comportamientos mediante herencia es imposible sin crear cadenas complicadas. La composición evita este problema al aplicar muchas directivas de forma independiente.

Resumen de la composición

Con la composición, un componente mantiene su enfoque e incorpora comportamientos mediante hostDirectives, combinando tantos como necesite.

hostDirectives: [ElevateDirective, RippleDirective, FocusTrapDirective]

Favorecer la composición

La recomendación de «favorecer la composición sobre la herencia» se aplica especialmente en Angular: la composición es flexible y aditiva, y evita las clases base frágiles.

Cuándo sigue siendo adecuada la herencia

La herencia puede ser adecuada para una única base estable compartida por variantes estrechamente relacionadas; por ejemplo, un campo de formulario base que las variantes especializan. Mantenga las jerarquías poco profundas.

Combinar ambos enfoques

Puede combinar ambos enfoques: extender una base delgada para compartir la estructura y componer comportamientos para las funcionalidades transversales.

Encapsulación

La composición mantiene privados los detalles internos de cada comportamiento y expone solo los inputs y outputs seleccionados, mientras que la herencia expone toda la API de la base.

Refactorizar hacia la composición

Cuando una clase base acumule responsabilidades que no están relacionadas, divida cada una en una directiva y compóngalas. El resultado será más modular y fácil de probar.

Guía para decidir

¿Necesita varios comportamientos independientes? Compóngalos. ¿Necesita una única base estructural compartida? Puede bastar con una base poco profunda. Como opción predeterminada, elija la composición por su flexibilidad.

Comprobación rápida

Compruebe su comprensión de la composición frente a la herencia.

Resumen

Ha aprendido que la composición (combinar comportamientos especializados mediante hostDirectives) es más flexible que la herencia (una única clase base), evita las jerarquías frágiles y debe ser la opción predeterminada, reservando la herencia poco profunda para compartir estructuras.

Gratis para empezar

Aprende HTML con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
38
Lecciones
144

Preguntas frecuentes

¿La lección «Composición frente a herencia» es gratis?

Sí — el texto completo de «Composición frente a herencia» 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 Angular Academy, actualiza a CoddyKit PRO. El curso de Angular Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Composición frente a herencia»?

Preferir la composición para compartir comportamientos Practicas Angular 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 Angular Academy?

No se requiere experiencia previa. Angular 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 4 de 4.

¿Cuánto tiempo toma la lección «Composición frente a herencia»?

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 Angular Academy?

Sí. Cada lección de Angular 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. La propiedad hostDirectives
  2. Exponer inputs y outputs
  3. Crear comportamientos reutilizables
  4. Composición frente a herencia
← Volver a Angular Academy