fbpx
Seleccionar página

¿Para que sirve la palabra super en el lenguaje java?

  • La palabra reservada super en java se usa para acceder a los atributos y métodos de una clase padre, esta palabra va ligada a la herencia en java.
  • También se usa la palabra clave super para inicializar atributos de la clase padre a través del llamado desde los métodos constructores de las clases hijo.

Tener acceso a miembros de la super clase

  • Se puede usar la palabra super para acceder a miembros (atributos) de una clase padre, también se usa para acceder a métodos de la misma clase padre.

Nota: Las clases hijo pueden sobre escribir métodos de las clases padre y después llamarlos con la cláusula super.

Sintaxis para acceder a miembros de clase

Como se ve en el ejemplo de la sintaxis, solo hay que poner la palabra super seguido de un punto «.» y después el nombre del atributo de la clase padre de la cual hereda la clase hija.

super.nombreAtributo;

Sintaxis para acceder a métodos de clase

El procedimiento es similar al anterior, solo que en lugar de poner el nombre del atributo de la clase padre despumes del punto, se pone el nombre del método de la clase padre.

Aquí tienes información adicional sobre herencia y polimorfismo por si los conceptos de clase padre y clase hija no te son familiares.

super.nombreMetodo();

Constructores de las subclases

Cuando se usa la herencia, las clases hijas pueden llamar en sus métodos constructores a los métodos constructores de sus clases padre.

Una forma es hacerlo sin parámetros o por defecto y otra forma es pasando parámetros a los métodos constructores de las clases padre, esto en caso de que los constructores padres tengan parámetros.

Sintaxis de llamada al método constructor padre sin parámetros

Como puedes ver, la clase Perro tiene un constructor por defecto que en su interior esta llamando al método constructor por defecto de la clase padre.

Esto quiere decir que cuando se cree una instancia de la clase Perro, también se va a crear una instancia de la clase padre de perro, que por lógica asumimos que es la clase Animal.

public Perro(){
    super();
}

Sintaxis de llamada al método constructor padre con parámetros

En este ejemplo la lógica es la misma que la del ejemplo pasado, solo que en este caso, al momento de crear la instancia de la clase Perro estamos pasando características o atributos concretos para ese perro.

Dichos atributos son asignados al animal usando super() con parámetros.

public Perro(int patas, String come, String voz){
    super(patas, come, voz);      
}

Ejemplo de super en java + this

Ahora veremos un ejemplo de como se usa palabra reservada super, para este ejemplo nos apoyaremos de la herencia y del uso de la palabra clave this.

Clase Animal

Esta clase, es la clase padre y contiene tres atributos encapsulados: patas, como y voz.

La encapsulación se logra usando los métodos set, get e is.

package superythis;

public class Animal {
    
    private int patas;
    private String come;
    private String voz;
    
    public Animal(){
        super();
        
    }
    
    public Animal(int patas, String come, String voz){
        super();
        
        this.patas = patas;
        this.come = come;
        this.voz = voz;
    }

    /**
     * @return the patas
     */
    public int getPatas() {
        return patas;
    }

    /**
     * @param patas the patas to set
     */
    public void setPatas(int patas) {
        this.patas = patas;
    }

    /**
     * @return the come
     */
    public String getCome() {
        return come;
    }

    /**
     * @param come the come to set
     */
    public void setCome(String come) {
        this.come = come;
    }

    /**
     * @return the voz
     */
    public String getVoz() {
        return voz;
    }

    /**
     * @param voz the voz to set
     */
    public void setVoz(String voz) {
        this.voz = voz;
    }
    
}

Clase Perro

Esta clase, es la clase hija de Animal, como se ve en la herencia, un perro es un animal, por lo tanto, puede heredar métodos y atributos de su clase padre.

La clase Perro tiene los siguientes atributos encapsulados: color, tamaño y muerde.

package superythis;

public class Perro extends Animal{
    
    private String color;
    private String tamano;
    private boolean muerde;
    
    public Perro(){
        super();
    }
    
    public Perro(int patas, String come, String voz){
        super(patas, come, voz);
        
    }
    
    public Perro(int patas, String come, String voz, String color, String tamano, boolean muerde){
        super(patas, come, voz);
        
        this.color = color;
        this.tamano = tamano;
        this.muerde = muerde;
    }

    /**
     * @return the color
     */
    public String getColor() {
        return color;
    }

    /**
     * @param color the color to set
     */
    public void setColor(String color) {
        this.color = color;
    }

    /**
     * @return the tamaño
     */
    public String getTamano() {
        return tamano;
    }

    /**
     * @param tamaño the tamaño to set
     */
    public void setTamano(String tamaño) {
        this.tamano = tamaño;
    }

    /**
     * @return the muerde
     */
    public boolean isMuerde() {
        return muerde;
    }

    /**
     * @param muerde the muerde to set
     */
    public void setMuerde(boolean muerde) {
        this.muerde = muerde;
    }
    
    
    
}

Clase principal

Esta clase se uso para crear los objetos de tipo Perro e inicializar las diferentes formas posibles para ejemplificar el uso de la palabra clave super en esta ejemplo hecho en java.

package superythis;

public class SuperYthisMain {
    
    public static void main(String []args){
        
        Perro rufo = new Perro();
        //Seteo de atributos de la clase padre (Animal)
        rufo.setPatas(4);
        rufo.setCome("carne");
        rufo.setVoz("ladra");
        
        //Seteo de los atributos de la clase hijo (Perro)
        rufo.setColor("negro");
        rufo.setTamano("grande");
        rufo.setMuerde(true);
        
        //Imprimir los atributos de Rufo
        System.out.println("RUFO");
        System.out.println("Rufo tiene " + rufo.getPatas() + " patas, come " + rufo.getCome() + 
                           ", y " + rufo.getVoz() + ". Rufo es de color " + rufo.getColor() + ", y es de tamaño " + rufo.getTamano() + " y muerde " + rufo.isMuerde());
        
        Perro fifi = new Perro(4, "croquetas", "ladra");
        fifi.setColor("blanco");
        fifi.setTamano("chico");
        fifi.setMuerde(false);
        System.out.println("FIFI");
        System.out.println("Fifi tiene " + fifi.getPatas() + " patas, come " + fifi.getCome() + 
                           ", y " + fifi.getVoz() + ". Fifi es de color " + fifi.getColor() + ", y es de tamaño " + fifi.getTamano() + " y muerde " + fifi.isMuerde());
        
        
        Perro sanson = new Perro(4, "de todo", "ladra", "gris", "grande", true);
        System.out.println("SANSON");
        System.out.println("Sanson tiene " + sanson.getPatas() + " patas, come " + sanson.getCome() + 
                           ", y " + sanson.getVoz() + ". Sanson es de color " + sanson.getColor() + ", y es de tamaño " + sanson.getTamano() + " y muerde " + sanson.isMuerde());
        
    }
    
}

Salida del programa

Aquí tienes la salida tal cual la presenta el IDE NetBeans.

run:
RUFO
Rufo tiene 4 patas, come carne, y ladra. Rufo es de color negro, y es de tamaño grande y muerde true
FIFI
Fifi tiene 4 patas, come croquetas, y ladra. Fifi es de color blanco, y es de tamaño chico y muerde false
SANSON
Sanson tiene 4 patas, come de todo, y ladra. Sanson es de color gris, y es de tamaño grande y muerde true
BUILD SUCCESSFUL (total time: 0 seconds)

Explicación del ejemplo de uso de super en java

Rufo

En el caso del Perro Rufo se creo el objeto sin inicializar atributos ni de la clase Perro ni de la clase animal, esto desde los métodos constructores.

La inicialización de los atributos se realizo usando los métodos set de la clase Perro y Animal.

Fifi

Para la perrita Fifi se creo la instancia de la clase Perro inicializando los atributos de la clase padre Animal como se puede ver en el ejemplo.

Los atributos de la clase Perro fueron inicializados usando los métodos set de la clase Perro.

Sanson

Para el perro Sanson, se inicializaron tanto los atributos de la clase Animal como los de la clase Perro usando el constructor de la clases Perro que a vez llama al constructor parametrizado de la clase animal.

Conclusión

Para terminar este articulo sobre la palabra clave super en java, déjame decirte que, si quieres aprender java de forma decente, tienes que aprender a usar de forma correcta las palabras reservadas super y this.

Esto hará que junto a la herencia y encapsulación, tus programas sean más robustos y vayas profesionalizando mas tu código, así cualquier programador podrá darles mantenimiento a tus códigos.

Revisa todos los capítulos del curso de java que tenemos para ti, GRATIS.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies