super
has several different uses depending on the context:- Define a lower bound for a generic type:
Consumer<? super Number>
- Access a member of the parent class that is shadowed by members of the subclass or local variables:
int foo = super.foo
- Call the parent constructor within a subclass constructor:
SubClass() { super("subclass param"); }
- In case of ambiguity, specify the parent type explicitly (as shown in the image)