- 1Java Exceptions
- 2Java Keywords
- 3Java abstract Keyword
- 4Java assert Keyword
- 5Java boolean Keyword
- 6Java break Keyword
- 7Java byte Keyword
- 8Java case Keyword
- 9Java catch Keyword
- 10Java char Keyword
- 11Java class Keyword
- 12Java const Keyword
- 13Java continue Keyword
- 14Java default Keyword
- 15Java do Keyword
- 16Java double Keyword
- 17Java else Keyword
- 18Java enum Keyword
- 19Java extends Keyword
- 20Java final Keyword
- 21Java finally Keyword
- 22Java float Keyword
- 23Java for Keyword
- 24Java goto Keyword
- 25Java if Keyword
- 26Java implements Keyword
- 27Java import Keyword
- 28Java instanceof Keyword
- 29Java int Keyword
- 30Java interface Keyword
- 31Java long Keyword
- 32Java native Keyword
- 33Java new Keyword
- 34Java null Keyword
- 35Java package Keyword
- 36Java private Keyword
- 37Java protected Keyword
- 38Java public Keyword
- 39Java return Keyword
- 40Java short Keyword
- 41Java static Keyword
- 42Java strictfp Keyword
- 43Java super Keyword
- 44Java switch Keyword
- 45Java synchronized Keyword
- 46Java this Keyword
- 47Java transient Keyword
- 48Java try Keyword
- 49Java void Keyword
- 50Java volatile Keyword
- 51Java while Keyword
- 52Java String Methods - Syntax and Description
- 53Java String
charAt()
method - 54Java String
codePointAt()
method - 55Java String
codePointBefore()
method - 56Java String
codePointCount()
method - 57Java String
compareTo()
method - 58Java String
compareToIgnoreCase()
method - 59Java String
concat()
method - 60Java String
contains()
method - 61Java String
contentEquals()
method - 62Java String
copyValueOf()
method - 63Java String
endsWith()
method - 64Java String
equals()
method - 65Java String
equalsIgnoreCase()
method - 66Java String
format()
method - 67Java String
getBytes()
method - 68Java String
getChars()
method - 69Java String
hashCode()
method - 70Java String
indexOf()
method - 71Java String
intern()
method - 72Java String
isEmpty()
method - 73Java String
join()
method - 74Java String
lastIndexOf()
method - 75Java String
length()
method - 76Java String
matches()
method - 77Java String
offsetByCodePoints()
method - 78Java String
regionMatches()
method - 79Java String
replace()
method - 80Java String
replaceAll()
method - 81Java String
replaceFirst()
method - 82Java String
split()
method - 83Java String
startsWith()
method - 84Java String
subSequence()
method - 85Java String
substring()
method - 86Java String
toCharArray()
method - 87Java String
toLowerCase()
method - 88Java String
toString()
method - 89Java String
toUpperCase()
method - 90Java String
trim()
method - 91Java String
valueOf()
method - 92Java ArrayList Methods - Complete Reference with Syntax and Description
- 93Java LinkedList Methods - Complete Reference with Syntax and Description
- 94Java HashMap Methods - Syntax and Descriptions
Java super Keyword
Usage and Examples
super
Keyword in Java
In Java, the super
keyword is used to refer to the immediate parent class of a subclass. It acts as a bridge to access the superclass’s variables, methods, or constructors from a subclass.
This is especially useful when the subclass overrides a method or variable, and you still want to access the original version from the parent class.
Why is super
Important?
Java follows the principles of object-oriented programming. One of those principles is inheritance, where a subclass inherits features from a superclass. Sometimes, the subclass wants to:
- Call a method defined in the superclass
- Access a variable hidden by its own declaration
- Call a specific constructor of the superclass
That’s where super
becomes powerful and essential.
1. Using super
to Call Superclass Method
If a method in the child class overrides a method from the parent, you can still call the parent version using super.methodName()
.
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
void sound() {
System.out.println("Dog barks");
}
void makeSound() {
super.sound(); // Call parent class method
sound(); // Call current class method
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound();
}
}
Animal makes a sound
Dog barks
2. Using super
to Access Superclass Variables
If both superclass and subclass have variables with the same name, super
helps in accessing the superclass’s variable.
class Vehicle {
int speed = 60;
}
class Car extends Vehicle {
int speed = 100;
void displaySpeed() {
System.out.println("Speed of Car: " + speed);
System.out.println("Speed of Vehicle: " + super.speed);
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car();
car.displaySpeed();
}
}
Speed of Car: 100
Speed of Vehicle: 60
3. Using super()
to Call Superclass Constructor
When creating a subclass object, the constructor of the superclass is automatically called. But if the superclass has a parameterized constructor, you need to explicitly call it using super(arguments)
.
class Person {
Person(String name) {
System.out.println("Person: " + name);
}
}
class Student extends Person {
Student(String name) {
super(name); // Call the constructor of Person
System.out.println("Student: " + name);
}
}
public class Main {
public static void main(String[] args) {
Student s = new Student("Alice");
}
}
Person: Alice
Student: Alice
Things to Remember
super
must be the first statement in the subclass constructor when calling the superclass constructor.- You can’t use
super
in a static context since it refers to an instance. super
helps resolve naming conflicts between parent and child class members.
Real-Life Analogy
Imagine you’re using a customized smartphone interface provided by a brand (the subclass), but sometimes you want to access the default Android settings (the superclass). The super
keyword acts like a backdoor to reach those default settings, even when they’ve been overridden or hidden.
When Should You Use super
?
- When subclass methods/fields override superclass methods/fields but you still want to refer to the original version.
- When passing parameters to a constructor in the superclass.