this vs super Keyword in Java
Fast recall
Quick revision
Core answer
this = reference to current instance (field disambiguation, calling sibling constructor via this()). super = reference to parent layer of same instance (calling parent constructor via super() as first line, calling parent's overridden method via super.method()). Both point to the same object. this() and super() are mutually exclusive in a constructor — only one allowed as first statement.Whether the candidate understands that this and super are reference variables pointing to different objects — this to the current instance, super to the parent portion — and can explain both as constructor calls and as method/field references
Not knowing that this() and super() must be the first statement in a constructor and therefore cannot coexist in the same constructor. Confusing super.method() with calling a static method on the parent class
Explain that super doesn't reference a separate object — it references the parent portion of the same object. Show how this() enables constructor chaining to reduce code duplication within a single class
Interview-ready guide
Interview answer
In Java, this and super are both references to the same object in memory — they just give you access to different layers of it. this is the current class's view of the object; super reaches through to what the parent class defined. Knowing both their roles as references and their special constructor forms is essential because the constructor rules cause some of Java's most confusing compile errors.
`this` — current class reference:
this.nameis the classic use: disambiguating an instance field from a constructor or method parameter that has the same name — without it,name = nameassigns the parameter to itself and the instance field stays at its default valuethis.method()explicitly invokes a method on the current object — occasionally used when calling interface default methods to pick between multiple defaultsthis(args)inside a constructor delegates to a sibling constructor in the same class — the telescoping pattern that avoids duplicating validation and default-value logic across multiple constructors
`super` — parent layer reference:
super.method()calls the parent's version of a method the child has overridden — typically used when the child wants to extend rather than replace the parent's behavior, such assuper.draw()followed by adding a highlightsuper.fieldaccesses a parent field being hidden by a child field of the same name — note that field resolution uses reference type, unlike method dispatchsuper(args)initializes the parent from a child constructor and must be the first statement; if you omit it entirely, the compiler invisibly insertssuper()— this causes a compile error on a line you never wrote when the parent has no no-arg constructor
The mutual exclusion rule:
this()andsuper()cannot both appear in the same constructor — each constructor calls exactly one; the compiler insertssuper()if you call neither- A
this()chain must eventually reach a constructor that callssuper()— otherwise the parent would never be initialized
I recommend always writing super(args) explicitly when the parent requires constructor arguments — the invisible no-arg insertion is the source of one of Java's most misleading error messages.
this vs super Keyword in Java
Direct Answer
this = reference to current instance (field disambiguation, calling sibling constructor via this()). super = reference to parent layer of same instance (calling parent constructor via super() as first line, calling parent's overridden method via super.method()). Both point to the same object. this() and super() are mutually exclusive in a constructor — only one allowed as first statement.
Common Mistakes & Pitfalls
Not knowing that this() and super() must be the first statement in a constructor and therefore cannot coexist in the same constructor. Confusing super.method() with calling a static method on the parent class
Check your understanding
Answer these without looking back at the article.
- What happens if you omit both this() and super() calls in a constructor?
- Can you use both this() and super() in the same constructor — why or why not?
- What is the difference between this.method() and super.method() when calling an overridden method?
- In what situation would you call super.method() rather than just overriding the method completely?
- How does the this reference behave inside a non-static inner class vs a lambda?
Related interview prep categories
1Looking for a structured roadmap?
Every module on this page is also part of the full Java backend interview track.