Я не понял для чего пишут super(fileName) в конструкторе, разве недостаточно что fileName вводится в конструктор FileOutputStream при создании его экземпляра? Зачем дополнительно с супером возиться, я до конца этот момент не понял
LeoAtrox
30 уровень
super()
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #3303140
8 ноября 2024, 08:02
Создание любого объекта начинается с выполнения конструктора его родителя.
Если в классе родителя есть конструктор без параметров или только конструктор по умолчанию, то это позволяет это делать неявно: компилятор перед запуском кода подставит команду super() первой в конструкторе наследника:
выведя на экран обе строки:
Если конструктора без параметров у родителя нет, то попытка подставить super() приведёт к обращению к несуществующему конструктору. Поэтому в этом случае при наследовании тебе нужно любой конструктор начинать с определения того, какой именно конструктор родителя и с каким значением параметра нужно вызвать.
Вообще по этой задаче было достаточно много обсуждений, объясняющих принципы работы декоратора: https://javarush.com/help?taskKey=com.javarush.task.task18.task1813
Про сам паттерн можешь почитать тут: https://refactoring.guru/ru/design-patterns/decorator
+3
LeoAtrox
9 ноября 2024, 02:09
От души
+1
Денис Enterprise Java Developer
7 ноября 2024, 22:45
Приложи код, тогда будет о чем разговаривать. Ну и скорее всего тебе надо почитать про наследование что ни будь.
0