Тогда я не пойму почему в этой задаче сначала происходит вызов конструктора класса ElectricCar, а уже из этого конструктора происходит вызов конструктора класса родителя Car (в лекции предоставлен пример, где при вызове конструктора дочернего класса ChildClass сначала происходит вызов класса родителя PatentClass, а потом уже вызов конструктора ChildClass) P.S. Цитата: "Так что вы всегда лично можете убедиться, что переменные класса инициализируются до вызова его конструктора. Вся инициализация базового класса идет до инициализации класса-наследника."
Антон Писклов
27 уровень
Вся инициализация базового класса идет до инициализации класса-наследника...
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Антон ПискловJava Developer в АО У-УАЗ
3 апреля 2021, 08:25полезный
В общем, не волнуйтесь если у вас возник такой же вопрос. В конце уровня прочтете лекцию про конструктор базового класса и всё встанет на свои места.
+1
Антон ПискловJava Developer в АО У-УАЗ
2 апреля 2021, 07:00решение
Понял, в задаче ход конем - у родительского класса Car конструктор с параметром. А параметр в него передаётся из конструктора дочернего класса ElectricCar с помощью super("EclectricCar"). В этом и была загвоздка: в итоге все же классы инициализируются в последовательности сначала Car потом ElectricCar, но конструктор класса Car получает параметр из конструктора класса EclectricCar. Спасибо всем. Понял.
+2
Ksenia VolkovaJava Developer в DXCMaster
1 апреля 2021, 13:14
Ты сам пишешь - в лекции предоставлен пример, где при вызове конструктора дочернего класса ChildClass сначала происходит вызов класса родителя PatentClass, а потом уже вызов конструктора ChildClass
То есть сначала вызывается дочерний конструктор, который первым делом вызывает родительский.
Но если дочерний не вызвать, кто же вызовет родительский?
+2
Антон ПискловJava Developer в АО У-УАЗ
2 апреля 2021, 06:21
Непонимание происходит из-за того, что в лекции описано, что при создание объекта класса Child унаследованного от класса Parent - первым инициализируется класс Parent и происходит вызов его конструктора, а потом уже инициализация класса Child и вызов его конструктора. (Это в примере из лекции - и там обращено внимание на последовательность инициализации дочернего и родительского класса). А в задаче все наоборот: при создание объекта класса ElectricCar унаследованного от класса Car-почему первым инициализируется класс ElectricCar и происходит вызов его конструктора, а потом уже инициализация родительского класса Car и вызов его конструктора.
+1
Антон ПискловJava Developer в АО У-УАЗ
2 апреля 2021, 06:26
То есть в чем хитрость, почему порядок поменялся. Сдается мне что это проделки super() - вызов конструктора родительского класса или из-за того, что в родительском класс отсутствует конструктор по умолчанию?
+1
Антон ПискловJava Developer в АО У-УАЗ
2 апреля 2021, 06:30
Порядок инициализации в программа из лекции:
ParentClass.a
ParentClass.b
PatentClass.constructor
ChildClass.c
ChildClass.d
ChildClass.constructor
+1