Resumen de los Elementos Básicos de JavaScript
INICIOHerencia en JavaScript
Definición
La herencia es un concepto fundamental de la programación orientada a objetos que permite que una clase (denominada clase hija o subclase) herede propiedades y métodos de otra clase (denominada clase padre o superclase). Esto permite reutilizar código y crear jerarquías de clases.
¿Por qué usar Herencia?
- Reutilización de Código: Permite compartir métodos y propiedades comunes entre clases, evitando la duplicación de código.
- Organización del Código: Facilita la organización del código en estructuras jerárquicas y más comprensibles.
- Extensibilidad: Permite crear nuevas clases basadas en clases existentes, ampliando su funcionalidad sin modificar el código original.
Implementación de la Herencia en JavaScript
En JavaScript, la herencia se puede implementar utilizando la palabra clave extends en combinación con clases. A continuación, se muestra un ejemplo práctico:
Ejemplo de Herencia
class Animal { constructor(nombre) { this.nombre = nombre; } hacerSonido() { console.log("El animal hace un sonido."); } } class Perro extends Animal { hacerSonido() { console.log("El perro ladra."); } } const miPerro = new Perro("Rex"); miPerro.hacerSonido(); // Salida: El perro ladra.
Detalles del Ejemplo
- Clase Padre: La clase Animal es la clase padre que tiene un constructor y un método hacerSonido.
- Clase Hija: La clase Perro hereda de Animal usando extends y sobreescribe el método hacerSonido.
- Instancia de la Clase Hija: Se crea una instancia de la clase Perro y se llama a su método hacerSonido.
Uso de super()
Cuando se crea una clase hija que extiende a una clase padre, puedes usar la función super() para llamar al constructor de la clase padre. Esto es útil para inicializar propiedades heredadas.
Ejemplo con super()
class Gato extends Animal { constructor(nombre) { super(nombre); // Llama al constructor de la clase padre } hacerSonido() { console.log("El gato maúlla."); } } const miGato = new Gato("Miau"); console.log(miGato.nombre); // Salida: Miau miGato.hacerSonido(); // Salida: El gato maúlla.
Conclusión
La herencia en JavaScript es una poderosa característica que permite a las clases compartir y extender funcionalidades, promoviendo la reutilización del código y una mejor organización. Usando la palabra clave extends y super(), puedes crear jerarquías de clases que faciliten el desarrollo de aplicaciones complejas.
Modificadores de Acceso en JavaScript
Definición
Los modificadores de acceso son características que permiten controlar la visibilidad y el acceso a las propiedades y métodos de una clase. En JavaScript, a partir de ECMAScript 2022, se han introducido modificadores de acceso para ayudar a encapsular datos y proteger la integridad del estado de un objeto.
Tipos de Modificadores de Acceso
- Public: Propiedades y métodos públicos son accesibles desde cualquier parte del código, tanto dentro como fuera de la clase.
- Private: Propiedades y métodos privados son accesibles solo dentro de la clase en la que están definidos. Se definen utilizando el símbolo # antes del nombre.
- Protected: Las propiedades y métodos protegidos son accesibles dentro de la clase y en las clases que heredan de ella. Aunque en JavaScript no hay un modificador específico para "protected", se puede simular usando convenciones como un prefijo de guion bajo (_).
Ejemplo de Modificadores de Acceso
class Persona { // Propiedad privada #nombre; constructor(nombre) { this.#nombre = nombre; // Inicializa la propiedad privada } // Método público saludar() { console.log(`Hola, soy ${this.#nombre}.`); } // Método privado #detalles() { return `Detalles de ${this.#nombre}`; } } const juan = new Persona("Juan"); juan.saludar(); // Salida: Hola, soy Juan. // console.log(juan.#nombre); // Error: propiedad privada no accesible // juan.#detalles(); // Error: método privado no accesible
Detalles del Ejemplo
- Propiedad Privada: La propiedad #nombre es privada y solo puede ser accedida dentro de la clase Persona.
- Método Público: El método saludar es público y se puede llamar desde una instancia de la clase.
- Método Privado: El método #detalles es privado y no puede ser llamado desde fuera de la clase.
Ventajas de Usar Modificadores de Acceso
- Encapsulamiento: Permiten ocultar la implementación interna de una clase, lo que protege la integridad del objeto.
- Mantenimiento: Facilitan el mantenimiento del código al prevenir el acceso no intencionado a datos internos.
- Claridad: Hacen que el propósito de las propiedades y métodos sea más claro, indicando qué es seguro y qué no es seguro acceder desde fuera de la clase.
Conclusión
Los modificadores de acceso son herramientas poderosas en JavaScript que permiten controlar la visibilidad de las propiedades y métodos de una clase. Al usar modificadores como public y private, puedes implementar el encapsulamiento y mejorar la organización y mantenibilidad de tu código.