Как и многие другие ключевые слова,
super имеет несколько разных значений в зависимости от контекста:1. Задать нижнюю границу generic-типа:
Consumer<? super Number>2. Обратиться к члену класса-родителя, который перекрыт (shadowed) членами наследника или локальными переменными:
int foo = super.foo3. Вызвать в конструкторе конструктор родителя:
SubClass() { super("subclass param"); }4. В случае неопределенности, уточнить родительский тип
interface A {
default int foo() { return 1; }
}
interface B {
default int foo() { return 2; }
}
class C implements A, B {
@Override
public int foo() {
return B.super.foo() ;
}
}👉@BookJava