Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

super

Обращается к родительскому классу: вызывает его конструктор или его версию метода.

Доступно с: Java 1.0

Синтаксис

super(arguments); super.method();

Примеры

Вызов конструктора родителя:

class Animal {
    String name;
 
    Animal(String name) {
        this.name = name;
    }
}
 
class Dog extends Animal {
    Dog(String name) {
        super(name);
    }
}
 
void main() {
    IO.println(new Dog("Rex").name);
}

Результат:

Rex

Дополнить метод родителя, а не заменить его целиком:

class Report {
    String render() {
        return "Report";
    }
}
 
class SalesReport extends Report {
    @Override
    String render() {
        return super.render() + ": sales";
    }
}
 
void main() {
    IO.println(new SalesReport().render());
}

Результат:

Report: sales

Примечания

Если у родителя нет конструктора без параметров, наследник обязан вызвать super(...) явно — иначе ошибка «constructor Animal in class Animal cannot be applied to given types». До Java 22 super(...) мог стоять только первой строкой конструктора; с Java 25 перед ним можно проверять аргументы, но не обращаться к this.

См. также

  • extends — Объявляет наследование: класс получает поля и методы родителя.
  • this — Ссылка на текущий объект — тот, у которого вызван метод или конструктор.
  • abstract — Помечает класс, объект которого создать нельзя, и метод без тела, который реализуют наследники.

В учебнике

  • Наследование — Наследование классов в Java: extends, protected, вызов super(...), переопределение методов и аннотация @Override.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.