Нет, невозможно использовать одновременно this() и super() в одном конструкторе в Java.
По спецификации Java либо super(), либо this() должны быть первым оператором в любом конструкторе. Поскольку оба требуют первой позиции, они не могут сосуществовать в одном конструкторе.
Если тебе нужно вызвать и конструктор родительского класса, и другой конструктор в твоём классе, используй такой подход:
this(), чтобы делегировать вызов другому конструктору того же класса (который затем сам вызовет super())super() напрямую, если нужно только инициализировать родительский классpublic class Parent {
public Parent(int value) {
System.out.println("Parent constructor");
}
}
public class Child extends Parent {
public Child() {
super(10); // Вызывает конструктор родителя
}
public Child(String name) {
this(); // Вызывает конструктор Child(), который вызывает super()
}
}
В этом примере Child(String name) через this() делегирует вызов конструктору Child(), который уже сам вызывает super(). Это позволяет пройти оба этапа инициализации, не нарушая требование Java: super() или this() должны стоять первым оператором.
И this(), и super() могут появиться в одном конструкторе, если super() вызвать перед this().
Новый — ещё не проверен сообществом
Вы