Herencia en Java explicada: Tipos, sintaxis y ejemplos prácticos
¿Qué es la herencia?
La herencia es un concepto fundamental de programación orientada a objetos que permite a una clase adquirir los campos y métodos de otra. Piensa en ello como un hijo que hereda rasgos de sus padres. Al reutilizar código existente, la herencia impulsa la reutilización y simplifica el mantenimiento.
Esta guía cubre:
- Tipos de herencia en Java
- Cómo funciona la herencia en Java
- Ejemplos paso a paso en Java
- Uso de la palabra clave
super - Escenarios reales de POO
Tipos de herencia
Java soporta varios patrones de herencia, cada uno adecuado a diferentes necesidades de diseño.
Herencia simple
Una clase extiende a otra, formando una relación padre-hijo simple.
Herencia múltiple
Aunque Java no permite que una clase extienda múltiples clases, entender el concepto ayuda al usar interfaces.
Herencia multinivel
Las cadenas de herencia pueden abarcar varios niveles: una subclase puede ser a su vez superclase para otra clase.
Herencia jerárquica
Una superclase puede dar lugar a múltiples subclases.
Herencia híbrida
La herencia híbrida combina patrones de herencia simple y múltiple. Aunque Java no la soporta directamente, el concepto es útil al diseñar jerarquías complejas usando interfaces.
Nota: Java no soporta herencia híbrida ni múltiple para clases.
Herencia en Java
En Java, una relación Es-Un se expresa mediante herencia. La palabra clave extends indica que una subclase hereda de una superclase.
Sintaxis típica:
class SubClase extends SuperClase {
// métodos y campos
}
Ejemplo de herencia en Java
A continuación se muestra una ilustración concisa de la herencia en acción.
class Doctor {
void doctorDetails() {
System.out.println("Detalles del Doctor...");
}
}
class Cirujano extends Doctor {
void cirujanoDetails() {
System.out.println("Detalles del Cirujano...");
}
}
public class Hospital {
public static void main(String[] args) {
Cirujano s = new Cirujano();
s.doctorDetails();
s.cirujanoDetails();
}
}
Uso de la palabra clave super
La palabra clave super proporciona acceso a miembros de la superclase, análoga a this pero para elementos de la clase padre.
Puede usarse con variables, métodos y constructores.
Ejemplo de sintaxis:
super.nombreMetodo();
Herencia en acción: Un escenario bancario
Considera una aplicación bancaria que soporta múltiples tipos de cuenta. En un enfoque estructurado, escribirías funciones separadas para acciones comunes como depositar y retirar.
Usando POO, defines una clase base Cuenta con comportamiento compartido, y la extiendes para tipos de cuenta específicos.
Añadiendo facilidad de descubierto
Cuando el requisito cambia para añadir una característica de descubierto, el código estructurado necesita alterarse. En cambio, POO permite crear una nueva subclase que implemente la lógica única de retirar sin tocar el código base probado.
Añadiendo una cuenta de tarjeta de crédito
De forma similar, introducir una cuenta de tarjeta de crédito con reglas de depósito únicas es sencillo en POO: simplemente extiende la clase base con comportamiento especializado.
Beneficios de la herencia en POO
La herencia elimina la duplicación de código colocando la lógica compartida en una clase padre. Las clases hijas heredan los métodos depositar y retirar, reduciendo la sobrecarga de mantenimiento.
Java
- Entendiendo Interfaces en C#: Definición, Ejemplo y Uso Práctico
- Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
- Conceptos de POO en Java: Fundamentos, ejemplos y ventajas
- Dominando la abstracción en POO: Clases y métodos abstractos en Java explicados
- Encapsulamiento en Java: Guía completa con ejemplo práctico
- Método Java String length(): Cómo obtener el tamaño de un String (Ejemplo)
- Entendiendo Java String.charAt(): Sintaxis, tipo de retorno, excepciones y ejemplo práctico
- Método Java String.contains(): Cómo comprobar subcadenas – Ejemplos prácticos
- Dominando Java String.endsWith(): Cómo comprobar sufijos de cadena con ejemplos
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos
- Algoritmo Insertion Sort en Java: Ejemplo Claro y Guía Paso a Paso