Buscar..


Uso de palabras clave super con ejemplos

super palabra clave desempeña un papel importante en tres lugares

  1. Nivel de constructor
  2. Nivel de método
  3. Nivel variable

Nivel de constructor

super palabra clave super se utiliza para llamar al constructor de la clase padre. Este constructor puede ser constructor por defecto o constructor parametrizado.

  • Constructor por defecto: super();

  • Constructor parametrizado: super(int no, double amount, String name);

     class Parentclass
     {
        Parentclass(){
           System.out.println("Constructor of Superclass");
        }
     }
     class Subclass extends Parentclass
     {
        Subclass(){
         /* Compile adds super() here at the first line
          * of this constructor implicitly
          */
         System.out.println("Constructor of Subclass");
        }
        Subclass(int n1){
         /* Compile adds super() here at the first line
          * of this constructor implicitly
          */
         System.out.println("Constructor with arg");
        }
        void display(){
         System.out.println("Hello");
        }
        public static void main(String args[]){
         // Creating object using default constructor
         Subclass obj= new Subclass();
         //Calling sub class method 
            obj.display();
            //Creating object 2 using arg constructor
            Subclass obj2= new Subclass(10);
            obj2.display();
       }
     }
    

Nota : super() debe ser la primera declaración en el constructor, de lo contrario obtendremos el mensaje de error de compilación.

Nivel de método

super palabra clave super también se puede utilizar en caso de anulación del método. super palabra clave super se puede utilizar para invocar o llamar al método de clase padre.

class Parentclass
{
   //Overridden method
   void display(){
    System.out.println("Parent class method");
   }
}
class Subclass extends Parentclass
{
   //Overriding method
   void display(){
    System.out.println("Child class method");
   }
   void printMsg(){
    //This would call Overriding method
    display();
    //This would call Overridden method
    super.display();
   }
   public static void main(String args[]){        
    Subclass obj= new Subclass();
    obj.printMsg(); 
   }
}

Nota : Si no hay una modificación de método, entonces no necesitamos usar la palabra clave super para llamar al método de clase principal.

Nivel variable

super se utiliza para referirse a la variable de instancia de clase primaria inmediata. En caso de herencia, puede haber posibilidad de que la clase base y la clase derivada puedan tener miembros de datos similares. Para diferenciar entre el miembro de datos de la clase base / padre y la clase derivada / hijo, en el contexto de la clase derivada, los datos de la clase base los miembros deben estar precedidos por una super palabra clave.

//Parent class or Superclass
class Parentclass
{
    int num=100;
}
//Child class or subclass
class Subclass extends Parentclass
{
    /* I am declaring the same variable 
     * num in child class too.
     */
    int num=110;
    void printNumber(){
     System.out.println(num); //It will print value 110
     System.out.println(super.num); //It will print value 100
    }
    public static void main(String args[]){
       Subclass obj= new Subclass();
       obj.printNumber();    
    }
}

Nota : Si no escribimos una super palabra clave antes del nombre del miembro de datos de la clase base, se hará referencia como miembro de datos de la clase actual y el miembro de datos de la clase base se ocultará en el contexto de la clase derivada.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow