Herencia en Java
La herencia es un mecanismo en Java que permite a una clase adquirir las propiedades y comportamientos de otra clase. Facilita la reutilización de código y la creación de jerarquías de clases.
Definición de Herencia
En Java, la herencia se implementa utilizando la palabra clave extends. La clase que hereda se llama subclase y la clase de la que se hereda se llama superclase.
Sintaxis:
class SuperClase {
// Código de la superclase
}
class SubClase extends SuperClase {
// Código de la subclase
}
Tipos de Herencia en Java
| Tipo de Herencia | Descripción |
|---|---|
| Herencia Simple | Una subclase hereda de una sola superclase. |
| Herencia Multinivel | Una clase hereda de otra clase, que a su vez hereda de otra clase. |
| Herencia Jerárquica | Varias subclases heredan de una misma superclase. |
Cuidado
Java no soporta herencia múltiple (una clase no puede heredar de más de una clase a la vez), pero se puede lograr mediante interfaces.
Ejemplo de Herencia en Java
// Superclase
class Animal {
String nombre;
void hacerSonido() {
System.out.println("Haciendo un sonido...");
}
}
// Subclase que hereda de Animal
class Perro extends Animal {
void ladrar() {
System.out.println("Guau Guau!");
}
}
public class Main {
public static void main(String[] args) {
Perro miPerro = new Perro();
miPerro.nombre = "Firulais";
miPerro.hacerSonido(); // Método heredado de Animal
miPerro.ladrar(); // Método propio de Perro
}
}
Uso de super
La palabra clave super se usa para:
1. Llamar al constructor de la superclase.
2. Acceder a métodos o atributos de la superclase.
Ejemplo:
class Animal {
Animal() {
System.out.println("Animal creado");
}
}
class Perro extends Animal {
Perro() {
super(); // Llama al constructor de Animal
System.out.println("Perro creado");
}
}
Beneficios de la Herencia
Reutilización de código: Evita la duplicación de código. Mantenibilidad: Facilita modificaciones y mejoras. Organización: Permite estructurar el código de forma jerárquica.
La herencia es una característica clave en la Programación Orientada a Objetos (POO) que ayuda a mejorar la modularidad y eficiencia del código en Java.