Keyword super in Java

There are 3 ways in which we can use the keyword super in Java:

  • Invoking a superclass method from a subclass
  • Using a superclass field in a subclass
  • Calling a superclass constructor

1. Invoking a superclass method from a subclass

We can call the method from the superclass by placing the super keyword before the method call:

class Vehicle {  
  
  void startEngine() {
    System.out.println("Starting the engine...");
  }  
  
  void stopEngine() {
    System.out.println("Stopping the engine...");
  }  
}
 
class Car extends Vehicle {  
  
  void move() {
    System.out.println("The car is moving...");
  } 
 
  void invoke() {  
    super.startEngine();  
    move();
    super.stopEngine();   
  }  
}  
class TestSuper2 {  

  public static void main(String args[]){  
  Car car = new Car();  
  car.invoke();  
  }
}
Output: Starting the engine… The car is moving… Stopping the engine…

2. Using a superclass field in a subclass

We use the super keyword to reference a field of the superclass in a subclass.

class Vehicle {  
  
  public int maxSpeed;
}
 
class Car extends Vehicle {  

  void setMaxSpeed(int maxSpeed) {
    super.maxSpeed = maxSpeed;
  } 
 
  int getMaxSpeed() {  
    return super.maxSpeed;
  }  
}  

class Test {  

  public static void main(String args[]) {  
    Car car = new Car();  
    car.setMaxSpeed(250);  
    System.out.println(car.getMaxSpeed());
  }
}
Output: 250

3. Calling a superclass constructor

We can also call a constructor from the superclass from the subclass constructor.

class Vehicle {  
 
 Vehicle() {
    System.out.println("Vehicle is created");
  }  
}
  
class Car extends Vehicle {  
  Car() {  
    super();  
    System.out.println("Car is created");  
  }  
}  

class Test {  

  public static void main(String args[]){  
    Car car  = new Car();  
  }
}
Output: Vehicle is created Car is created
 
If we don’t add the super keyword to the subclass constructor ourselves, the compiler will add it. So whenever we call a subclass constructor, the corresponding superclass constructor will be called first.

Note: Call to ‘super()‘ must be the first statement in the constructor’s body otherwise we’ll get a compiler error:

class Car extends Vehicle {  

  Car() {  
    System.out.println("Car is created");
    super();  // compiler error
  }
}


That’s it!

Leave a Reply

Your email address will not be published.