super можно использовать для того чтобы:
- Указать нижнюю границу для дженерика, это можно сделать так: Consumer<? super Number>;
- С помощью super можно обратиться к перекрытым локальным переменным или методам родительского класса, например: int shadowedFoo = super. ShadowedFoo;
- Он позволяет запустить конструктор родительского класса в исходном: SubClass() { super(«parent constructor»); };
- Если два или больше реализуемых интерфейса объявляют один и тот же метод, то с помощью super можно уточнить используемый родительский.
interface A {
default int foo() { return 1;
}
interface В {
default int foo() { return 2; }
}
class C implements A, В {
@Override
public int foo() {
return B.super.foo();
}
}