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

#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(...);
}