Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Dominando la palabra clave super en Java: Uso avanzado y ejemplos prácticos

Dominando la palabra clave super en Java: Uso avanzado y ejemplos prácticos

Descubre cómo la palabra clave super desbloquea poderosas capacidades de herencia en Java, con ejemplos claros y guía experta.

La palabra clave super es una piedra angular del modelo de herencia de Java, permitiendo a las subclases referenciar miembros —campos, métodos y constructores— de su superclase directa. Entender sus matices es esencial para escribir código limpio y mantenible.


Usos principales de super

  1. Invocar métodos de la superclase sobrescritos.
  2. Acceder a campos de la superclase cuando son ocultados por campos de la subclase.
  3. Llamar explícitamente a un constructor de la superclase desde un constructor de la subclase.

Profundicemos en cada escenario con ejemplos de código.


1. Llamando a un método de superclase sobrescrito

Cuando una subclase sobrescribe un método, la versión de la superclase permanece accesible vía super.nombreMetodo(). Esto es crítico para extender comportamiento sin perder la funcionalidad original.

Ejemplo: Sobrescritura de método y super

class Animal { public void mostrar() { System.out.println("Soy un animal"); } } class Perro extends Animal { @Override public void mostrar() { System.out.println("Soy un perro"); } public void imprimirMensaje() { mostrar(); // Llama a Perro.mostrar() super.mostrar(); // Llama a Animal.mostrar() } } public class Main { public static void main(String[] args) { Perro perro = new Perro(); perro.imprimirMensaje(); } } 

Salida:

Soy un perro Soy un animal 

Usar super.mostrar() asegura que se ejecute la implementación de la superclase, útil cuando se extiende funcionalidad en lugar de reemplazarla.


2. Accediendo a campos de superclase ocultados

Si tanto la superclase como la subclase declaran un campo con el mismo nombre, el campo de la subclase oculta (shadows) el de la superclase. super.nombreCampo te permite referenciar el campo original.

Ejemplo: Ocultamiento de campos (shadowing)

class Animal { protected String tipo = "animal"; } class Perro extends Animal { public String tipo = "mamífero"; public void imprimirTipo() { System.out.println("Soy un " + tipo); // Perro.tipo System.out.println("Soy un " + super.tipo); // Animal.tipo } } public class Main { public static void main(String[] args) { Perro perro = new Perro(); perro.imprimirTipo(); } } 

Salida:

Soy un mamífero Soy un animal 

3. Usando super() para llamar a un constructor de la superclase

Los constructores no se heredan, pero una subclase puede invocar un constructor de la superclase usando super(). Esto debe ser la primera sentencia en el constructor de la subclase y es requerido cuando la superclase carece de un constructor sin argumentos o cuando necesitas pasar argumentos.

Ejemplo 1: Llamada a constructor por defecto

class Animal { Animal() { System.out.println("Soy un animal"); } } class Perro extends Animal { Perro() { super(); System.out.println("Soy un perro"); } } public class Main { public static void main(String[] args) { new Perro(); } } 

Salida:

Soy un animal Soy un perro 

Ejemplo 2: Llamada a constructor parametrizado

class Animal { Animal(String tipo) { System.out.println("Tipo: " + tipo); } } class Perro extends Animal { Perro() { super("Animal"); System.out.println("Soy un perro"); } } public class Main { public static void main(String[] args) { new Perro(); } } 

Salida:

Tipo: Animal Soy un perro 

En el caso parametrizado, el compilador no puede invocar un constructor no‑default automáticamente, así que super(argumentos) es obligatorio.


Dominar la palabra clave super te permite escribir jerarquías de herencia robustas, asegurando que la lógica sobrescrita permanezca accesible y los constructores se inicialicen correctamente. Estas técnicas son esenciales para aplicaciones Java escalables y se alinean con las mejores prácticas recomendadas por expertos de la industria.

Java

  1. Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
  2. Comentarios en Java: Tipos, Uso y Mejores Prácticas
  3. Dominar if…else en Java: Control de Flujo Explicado
  4. Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
  5. Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
  6. Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
  7. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  8. Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
  9. Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
  10. Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
  11. Entendiendo Java Vector: Uso, Características y Comparación con ArrayList