Guía de la palabra clave super Java
Introducción
En Java, el palabra clave super
es una herramienta poderosa y fundamental que se usa en el contexto de la herencia y el acceso a los miembros de la clase base (superclase). Es un concepto esencial que te permitirá entender cómo interactúan las clases y objetos en Java, especialmente cuando se utilizan en conjunto con la herencia. Esta guía está diseñada para principiantes, por lo que cubriremos todos los aspectos básicos de super
de manera sencilla, con ejemplos fáciles de seguir.
¿Qué es super
?
La palabra clave super
en Java se usa principalmente en dos situaciones:
- Acceder a los miembros (métodos o variables) de la superclase: Cuando una clase hereda de otra, puedes usar
super
para hacer referencia a los miembros de la clase base. - Llamar al constructor de la superclase: Se utiliza para invocar el constructor de la clase base desde el constructor de la clase derivada.
1. Acceso a miembros de la superclase
En Java, cuando una clase hereda de otra, puede acceder a los miembros (métodos y variables) de la clase base. Si un miembro tiene el mismo nombre en la clase base y la clase derivada, el uso de super
permite acceder a la versión de la clase base.
Ejemplo 1: Acceder a un método de la superclase
class Animal {
void hacerSonido() {
System.out.println("El animal hace un sonido");
}
}
class Perro extends Animal {
void hacerSonido() {
System.out.println("El perro ladra");
}
void sonidoDeAnimal() {
super.hacerSonido(); // Llama al método de la superclase
}
}
public class Main {
public static void main(String[] args) {
Perro miPerro = new Perro();
miPerro.sonidoDeAnimal(); // Imprime: El animal hace un sonido
}
}
En este ejemplo, la clase Perro
sobrescribe el método hacerSonido()
de la clase Animal
. Sin embargo, al usar super.hacerSonido()
, estamos llamando al método de la superclase, es decir, el método hacerSonido()
de la clase Animal
.
Ejemplo 2: Acceder a una variable de la superclase
class Animal {
String nombre = "Animal";
}
class Perro extends Animal {
String nombre = "Perro";
void mostrarNombre() {
System.out.println("Nombre en la clase Perro: " + nombre);
System.out.println("Nombre en la clase Animal: " + super.nombre);
}
}
public class Main {
public static void main(String[] args) {
Perro miPerro = new Perro();
miPerro.mostrarNombre();
}
}
En este caso, super.nombre
accede a la variable nombre
de la superclase Animal
, mientras que nombre
sin super
hace referencia a la variable nombre
de la clase Perro
.
2. Llamar al constructor de la superclase
Cuando una clase hereda de otra, Java llama automáticamente al constructor de la superclase, pero si necesitas llamar específicamente a un constructor de la clase base, puedes hacerlo usando super()
. Esto es útil cuando la clase base tiene un constructor que necesita parámetros.
Ejemplo 3: Llamar a un constructor de la superclase
class Animal {
String nombre;
Animal(String nombre) {
this.nombre = nombre;
}
}
class Perro extends Animal {
Perro(String nombre) {
super(nombre); // Llama al constructor de la superclase
}
void mostrarNombre() {
System.out.println("El nombre del perro es: " + nombre);
}
}
public class Main {
public static void main(String[] args) {
Perro miPerro = new Perro("Bobby");
miPerro.mostrarNombre(); // Imprime: El nombre del perro es: Bobby
}
}
En este ejemplo, la clase Perro
tiene un constructor que recibe un parámetro nombre
, y usa super(nombre)
para invocar el constructor de la clase Animal
y asignar el valor de nombre
a la propiedad heredada.
Resumen de los conceptos clave
-
super
para acceder a métodos y variables: Si una clase hija sobrescribe un método o tiene una variable con el mismo nombre que la clase base, puedes usarsuper
para acceder a los miembros de la superclase. -
super()
para llamar al constructor de la superclase: Puedes utilizarsuper()
dentro del constructor de la subclase para invocar un constructor de la clase base, especialmente cuando la superclase tiene un constructor con parámetros.
Ejercicios
-
Acceso a un método de la superclase: Crea una clase base
Vehiculo
con un métodomover()
. Luego, crea una subclaseCoche
que sobrescriba este método y, en el método de la subclase, usasuper.mover()
para llamar al método de la clase base. -
Uso de
super()
en el constructor: Crea una clasePersona
con un constructor que reciba un nombre y una edad. Luego, crea una subclaseEstudiante
que reciba un nombre, edad y número de matrícula, y usasuper()
para llamar al constructor de la clasePersona
.
Conclusión
La palabra clave super
es fundamental en Java, especialmente cuando se trabaja con herencia. Permite acceder a los miembros de la clase base y llamar a los constructores de la superclase, lo que facilita la reutilización de código y la organización jerárquica de las clases. Al dominar su uso, estarás mejor preparado para escribir aplicaciones más robustas y comprensibles. Te animamos a seguir explorando el concepto de herencia en Java y a practicar con ejercicios más avanzados para mejorar tu comprensión de este tema clave.