super in Java

Siddharth Swami Oct 18, 2021 Sep 12, 2021
super in Java

In Java, we have a predefined keyword super that is somewhat related to the parent class. We will be discussing the super() function in detail in this tutorial.

In Java, the super keyword acts as a reference variable for the parent class objects. It can be used to call the parent’s class methods and variables.

For example

class Teacher { //Parent class
    int grade = 90;
}

class Students extends Teacher {  //subclass
    Students()
    {
        
        System.out.println("Grade "+ super.grade);
    }
}
  
public class Main {
  
    public static void main(String[] args)
    {
        Students s = new Students();
    }
}

Output:

Grade 90

In the above example, we accessed the variable grade from parent class Teacher from the constructor of its subclass Students using the super keyword.

We also have the super() function, which invokes the parent’s class constructor. This function is only used for calling the constructors of the parent class. Both parametric and non-parametric constructors can be called by using the super() function. If somehow the constructor does not invoke a superclass constructor explicitly while using the super() function, then the no-argument constructor of the superclass is called by the Java compiler itself.

See the code below.

class Teacher {      //Parent class
  
    Teacher()        //constructor
    {
        System.out.println("Teacher class Constructor");
    }
}
class Students extends Teacher {  //subclass
    Students()
    {
        super();
        System.out.println("Students class Constructor");
    }
}
  
public class Main {
  
    public static void main(String[] args)
    {
        Students s = new Students();
    }
}

Output:

Teacher class Constructor
Students class Constructor

We created a parent class Teacher and a parent class constructor in the above code, which prints a message. Then a subclass Students is extended from Teacher, which has a constructor Students() that consists of the super() function for invoking the parent class constructor. Then we have the main class, which calls the subclass for executing the program. The super() function invoked the parent class constructor to print the message from the parent class and then from the subclass.

Related Article - Java Class