Должны ли вы явно вызывать конструктор суперкласса в подклассах Java?
При определении подкласса обычной практикой являются конструкторы, которые явно вызывают конструктор суперкласса с использованием super(). Однако можно задаться вопросом, необходимо ли это.
Автоматически ли добавляется компилятором super()?
Да, если конструктор подкласса пропускает вызов суперкласса конструктор, компилятор автоматически вызовет доступный конструктор без аргументов (конструктор без аргументов) в суперклассе. Такое поведение по умолчанию известно как цепочка конструкторов.
Типы конструкторов
Когда есть super( ) Требуется?
Явное использование super() требуется только в том случае, если:
Пример 1:
public class Base {}
public class Derived extends Base {}
Явный вызов super() не требуется, поскольку у Base есть конструктор по умолчанию.
Пример 2:
public class Base {
public Base(int i) {}
}
public class Derived extends Base {
public Derived(int i) {
super(i); // Explicitly call the Base(int) constructor
}
}
В этом случае требуется super(i), поскольку у суперкласса нет конструктора без аргументов, а конструктор подкласса должен предоставить начальное значение для своего параметра i.
Понимая эти концепции, вы сможете избежать ненужных вызовов super() и обеспечить правильную цепочку конструкторов в ваших подклассах.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3