La palabra clave super en Java se utiliza para referirse al objeto de clase padre inmediato. Se suele utilizar para acceder a los métodos y constructores de la clase padre, lo que permite a una subclase heredar y reutilizar la funcionalidad de su superclase.
Utilización
La palabra clave super puede utilizarse en tres contextos principales:
Para llamar al constructor de la superclase.
Para acceder a un método de la superclase que ha sido sobrescrito en la subclase.
Para acceder a un campo de la superclase cuando está oculto por un campo del mismo nombre en la subclase.
Ejemplo 1: Llamada al constructor de la superclase
classAnimal{Animal(){
System.out.println("Animal constructor called");}}classDogextendsAnimal{Dog(){super();// Calls the constructor of Animal class
System.out.println("Dog constructor called");}}publicclassTestSuper{publicstaticvoidmain(String[] args){
Dog d =newDog();// Output: Animal constructor called// Dog constructor called}}Con la tecnología de
En este ejemplo, la llamada a super() en el constructor de Dog invoca al constructor de la clase Animal.
Ejemplo 2: Acceso al método de la superclase
classAnimal{voidsound(){
System.out.println("Animal makes a sound");}}classDogextendsAnimal{voidsound(){super.sound();// Calls the sound() method of Animal class
System.out.println("Dog barks");}}publicclassTestSuper{publicstaticvoidmain(String[] args){
Dog d =newDog();
d.sound();// Output: Animal makes a sound// Dog barks}}Con la tecnología de
Aquí, la llamada super.sound() del método sound() de la clase Dog invoca al método sound() de la clase Animal.
Ejemplo 3: Acceso al campo Superclase
classAnimal{
String color ="white";}classDogextendsAnimal{
String color ="black";voiddisplayColor(){
System.out.println("Dog color: "+// Prints the color of Dog class
System.out.println("Animal color: "+super.// Prints the color of Animal class}}publicclassTestSuper{publicstaticvoidmain(String[] args){
Dog d =newDog();
d.displayColor();// Output: Dog color: black// Animal color: white}}Con la tecnología de
En este ejemplo, super.color se utiliza para acceder al campo color de la clase Animal, que está oculto por el campo color de la clase Dog.
Consejos y buenas prácticas
Encadenamiento de constructores: Utiliza super() en el constructor de una subclase para asegurarte de que se llama al constructor de la superclase, permitiendo la correcta inicialización del objeto.
classParent{Parent(){
System.out.println("Parent constructor");}}classChildextendsParent{Child(){super();// Always the first statement in the constructor
System.out.println("Child constructor");}}Con la tecnología de
Anulación de métodos: Utiliza super.methodName() para llamar a un método de la superclase cuando se sobrescribe en la subclase. Esto es útil para ampliar o modificar el comportamiento del método heredado.
classParent{voiddisplay(){
System.out.println("Parent display");}}classChildextendsParent{voiddisplay(){super.display();// Calls Parent's display method
System.out.println("Child display");}}Con la tecnología de
Acceso al campo: Utiliza super.fieldName para acceder a un campo de la superclase cuando esté oculto por un campo del mismo nombre en la subclase. Esto ayuda a evitar ambigüedades y garantiza que se accede al campo correcto.
classParent{
int number =10;}classChildextendsParent{
int number =20;voidshowNumber(){
System.out.println(super.number);// Accesses Parent's number}}Con la tecnología de
Legibilidad: Utiliza super juiciosamente para que tu código sea más legible y fácil de mantener. El uso excesivo de super puede dificultar la comprensión del código.
Colocación en Constructores: Coloca siempre la llamada a super() como primera sentencia en el constructor de la subclase para evitar errores de compilación.
Contextos estáticos: Recuerda que super no puede utilizarse en métodos estáticos ni en contextos estáticos, ya que se refiere a una instancia de una clase.
La palabra clave
superen Java se utiliza para referirse al objeto de clase padre inmediato. Se suele utilizar para acceder a los métodos y constructores de la clase padre, lo que permite a una subclase heredar y reutilizar la funcionalidad de su superclase.Utilización
La palabra clave
superpuede utilizarse en tres contextos principales:Syntax
Ejemplos
Ejemplo 1: Llamada al constructor de la superclase
En este ejemplo, la llamada a
super()en el constructor deDoginvoca al constructor de la claseAnimal.Ejemplo 2: Acceso al método de la superclase
Aquí, la llamada
super.sound()del métodosound()de la claseDoginvoca al métodosound()de la claseAnimal.Ejemplo 3: Acceso al campo Superclase
En este ejemplo,
super.colorse utiliza para acceder al campocolorde la claseAnimal, que está oculto por el campocolorde la claseDog.Consejos y buenas prácticas
super()en el constructor de una subclase para asegurarte de que se llama al constructor de la superclase, permitiendo la correcta inicialización del objeto.super.methodName()para llamar a un método de la superclase cuando se sobrescribe en la subclase. Esto es útil para ampliar o modificar el comportamiento del método heredado.super.fieldNamepara acceder a un campo de la superclase cuando esté oculto por un campo del mismo nombre en la subclase. Esto ayuda a evitar ambigüedades y garantiza que se accede al campo correcto.superjuiciosamente para que tu código sea más legible y fácil de mantener. El uso excesivo desuperpuede dificultar la comprensión del código.super()como primera sentencia en el constructor de la subclase para evitar errores de compilación.superno puede utilizarse en métodos estáticos ni en contextos estáticos, ya que se refiere a una instancia de una clase.