#java #constructor
#java #конструктор
Вопрос:
У меня есть класс «ChildClass», который расширяет класс «ParentClass». Вместо того, чтобы полностью заменять конструктор для родительского класса, я хочу сначала вызвать конструктор родительского класса, а затем выполнить некоторую дополнительную работу.
Я полагаю, что по умолчанию вызывается конструктор родительского класса с 0 аргументами. Это не то, чего я хочу. Мне нужно, чтобы конструктор вызывался с аргументом. Возможно ли это?
Я пытался
this = (ChildClass) (new ParentClass(someArgument));
но это не работает, потому что вы не можете изменить «это».
Комментарии:
1.
super
в Java.2. Проверьте это для решения: leepoint.net/notes-java/oop/constructors /…
Ответ №1:
Вы можете ссылаться на родительский конструктор с помощью «super» из дочернего конструктора.
public class Child extends Parent {
public Child(int someArg) {
super(someArg);
// other stuff
}
// ....
}
Комментарии:
1. Ага, спасибо. Мне действительно стоит прочитать ту книгу по программированию на Java, которая у меня завалялась, это помешало бы мне задавать подобные глупые вопросы.
2. Вызов родительского конструктора с помощью super() должен быть ПЕРВЫМ вызовом в вашем дочернем конструкторе.
Ответ №2:
Чтобы вызвать конкретный конструктор родительского класса, поместите super(param1, param2, ...)
в качестве первого оператора в теле конструктора дочернего класса.
Ответ №3:
Вы должны использовать ключевое слово super.
public ChildClass(...) {
super(...);
}