TypeScript
Tutorial TypeScript: Herencia
TypeScript herencia: técnicas y ejemplos. Domina las técnicas de herencia en TypeScript con ejemplos prácticos y detallados.
Aprende TypeScript GRATIS y certifícateLa herencia en TypeScript es un mecanismo que permite que una clase adquiera propiedades y métodos de otra clase llamada clase base o superclase. Esto significa que una clase puede heredar características de otra clase y también puede agregar su propia funcionalidad adicional. La herencia es una parte fundamental de la programación orientada a objetos y proporciona una forma eficiente de reutilizar y organizar el código.
En TypeScript, la herencia se logra mediante la palabra clave extends
. Una clase hija o subclase puede heredar de una clase padre o superclase utilizando esta palabra clave. La clase hija adquiere todos los miembros (propiedades y métodos) de la clase padre y puede agregar o modificar estos miembros según sea necesario.
A continuación, se presenta un ejemplo de cómo se define una clase base en TypeScript:
// Definición de la clase base
class Vehiculo {
marca: string;
modelo: string;
constructor(marca: string, modelo: string) {
this.marca = marca;
this.modelo = modelo;
}
acelerar() {
console.log('El vehículo está acelerando.');
}
frenar() {
console.log('El vehículo está frenando.');
}
}
En este ejemplo, la clase Vehiculo
es la clase base que tiene dos propiedades, marca
y modelo
, y dos métodos, acelerar
y frenar
.
Ahora, puede definirse una clase hija que herede de la clase base utilizando la palabra clave extends
. La clase hija puede agregar su propia funcionalidad adicional o modificar el comportamiento heredado de la clase base.
// Definición de la clase hija
class Coche extends Vehiculo {
puertas: number;
constructor(marca: string, modelo: string, puertas: number) {
super(marca, modelo); // super() es la llamada al constructor de la clase base
this.puertas = puertas;
}
abrirPuertas() {
console.log(`Abriendo las ${this.puertas} puertas del coche.`);
}
// Override del método acelerar
// Un objeto Coche que llame a acelerar() llamará a este método, y no al de Vehiculo
// Podría llamarse al acelerar() de la clase padre dentro de este método mediante super.acelerar()
acelerar() {
// super.acelerar(); // Si se quisiera llamar al acelerar() de Vehiculo primero
console.log('El coche está acelerando rápidamente.');
}
}
En este ejemplo, la clase Coche
es una subclase de la clase Vehiculo
. Además de heredar las propiedades marca
, modelo
y los métodos acelerar
y frenar
de la clase base, la clase Coche
tiene una propiedad adicional puertas
y un método adicional abrirPuertas
. También se ha sobrescrito el método acelerar
para que imprima un mensaje específico para los coches.
Ahora pueden crearse instancias de la clase Coche
y utilizar sus propiedades y métodos heredados, así como los adicionales que se han definido en la clase hija:
// Crear una instancia de la clase Coche
const miCoche = new Coche('Toyota', 'Camry', 4);
// Acceder a las propiedades heredadas de la clase base
console.log(miCoche.marca); // "Toyota"
console.log(miCoche.modelo); // "Camry"
// Utilizar los métodos heredados de la clase base
miCoche.acelerar(); // "El coche está acelerando rápidamente."
miCoche.frenar(); // "El vehículo está frenando."
// Utilizar la propiedad y el método adicionales de la clase hija
console.log(miCoche.puertas); // 4
miCoche.abrirPuertas(); // "Abriendo las 4 puertas del coche."
En TypeScript, una clase no puede extender a varias clases, pero una clase sí que puede ser extendida por cualquier número de clases.
// NO permitido: Una clase no puede extender a varias clases
class ParentA { }
class ParentB { }
class Child extends ParentA, ParentB { } // Error de compilación
// SÍ permitido: Varias clases pueden extender a la misma clase
class Parent { }
class ChildA extends Parent { }
class ChildB extends Parent { }
En resumen, la herencia en TypeScript permite que una clase adquiera las propiedades y métodos de otra clase, lo que facilita la reutilización del código y la creación de jerarquías de clases. Mediante el uso de la palabra clave extends
, una clase hija puede heredar de una clase padre y agregar o modificar su comportamiento según sea necesario. Esto promueve la modularidad, el mantenimiento del código y la organización eficiente de las funcionalidades relacionadas.
Ejercicios de esta lección Herencia
Evalúa tus conocimientos de esta lección Herencia con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Funciones
Funciones de primera clase
Tipos de utilidad
Clases
OOP y CRUD en TypeScript
Tipos literales
Namespaces
Módulos
Funciones TypeScript
Encapsulación
Interfaces
Funciones puras
Variables y constantes
Funciones flecha
Funciones puras
Control de flujo
Resolución de módulos
Control de flujo
Polimorfismo
Operadores
Funciones flecha
Herencia
Clases y objetos
Clases
Operadores
Encapsulación
Herencia
Funciones
Tipos de unión e intersección
Funciones de alto orden
Inmutabilidad
Interfaces
Funciones de alto orden
Tipos de unión e intersección
Tipos genéricos
Control de flujo
Polimorfismo
Interfaces
Tipos literales
Tipos de utilidad
Tipos genéricos
Inmutabilidad
Herencia de clases
Variables y constantes
Variables y constantes
Funciones de primera clase
Introducción a TypeScript
Todas las lecciones de TypeScript
Accede a todas las lecciones de TypeScript y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Typescript
Introducción Y Entorno
Variables Y Constantes
Sintaxis
Operadores
Sintaxis
Control De Flujo
Sintaxis
Funciones
Sintaxis
Funciones Flecha
Sintaxis
Clases Y Objetos
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Inmutabilidad
Programación Funcional
Funciones Puras
Programación Funcional
Funciones De Primera Clase
Programación Funcional
Funciones De Alto Orden
Programación Funcional
Tipos Literales
Tipos De Datos Avanzados
Tipos Genéricos
Tipos De Datos Avanzados
Tipos De Unión E Intersección
Tipos De Datos Avanzados
Tipos De Utilidad
Tipos De Datos Avanzados
Módulos
Namespaces Y Módulos
Namespaces
Namespaces Y Módulos
Resolución De Módulos
Namespaces Y Módulos
Certificados de superación de TypeScript
Supera todos los ejercicios de programación del curso de TypeScript y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender el concepto de herencia en la programación orientada a objetos.
- Conocer el uso de la palabra clave
extends
para establecer una relación de herencia entre clases en TypeScript. - Aprender cómo una clase hija puede heredar propiedades y métodos de una clase padre.
- Entender que las subclases pueden agregar propiedades y métodos adicionales o modificar el comportamiento heredado de la clase base.
- Practicar la creación de clases base y subclases en TypeScript y su utilización para reutilizar y organizar el código de manera eficiente.
- Familiarizarse con los beneficios de la herencia, como la creación de jerarquías de clases y la simplificación de la estructura de código.