«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Стоит ли всегда использовать super() в конструкторах?

Стоит ли всегда использовать super() в конструкторах?

Опубликовано 25 ноября 2024 г.
Просматривать:379

Should You Always Use `super()` in Constructors?

Является ли наличие super() в конструкторах необязательным?

В объектно-ориентированном программировании обычной практикой является использование конструкторов в производных классах вызывать конструкторы в их суперклассах. Однако некоторые разработчики сомневаются в необходимости явного указания super() внутри конструкторов.

Автоматический вызов super() компилятором

Компилятор Java автоматически вставляет вызов метода доступный конструктор суперкласса без аргументов, если конструктор подкласса не указывает конструктор суперкласса. Это означает, что в большинстве случаев отсутствие super() не влияет на поведение программы.

Исключения из правила

Однако бывают ситуации где требуется явный вызов super():

  • Если у суперкласса нет доступного конструктора без аргументов.
  • Если у конструктора подкласса есть аргументы, а у суперкласса есть конструктор, который принимает аргументы.
  • Если конструктору подкласса необходимо вызвать в суперклассе определенный конструктор, отличный от конструктора без аргументов по умолчанию.

Использование конструктора при наличии аргументов

Когда конструктор подкласса имеет аргументы, Конструктор подкласса несет ответственность за передачу соответствующих аргументов конструктору суперкласса. Компилятор не будет автоматически вызывать конструктор суперкласса с аргументами, если это явно не указано.

Пример

Рассмотрите следующий код:

public class Base {
    private Base() {}
}

public class Derived extends Base {
    public Derived(int i) {
        super(); // Call the default no-args constructor of Base
    }
}

В этом примере вызов super() в конструкторе Derived необходим, поскольку у Base есть частный конструктор без аргументов.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3