|
![]() |
#1 |
Moderator
|
Цитата:
Нет.
![]() Назначение конструктора - инициализация внутренних структур данных класса. Если мы создаем наследника - значит, мы ожидаем, что он будет пользоваться данными предка. Если мы не вызываем конструктор предка значит мы допускаем потенциальную возможность, что класс-наследник обратится к неициализированным данным предка, что может быть большой проблемой. Решения, которые я вижу: 1) Вызывать конструктор предка. 2) Выносить переменные, которые не должны использоваться наследниками в отдельные классы (или скрывать их каким-то другим способом, если это позволяет делать язык разработки). |
|
![]() |
#2 |
Участник
|
Прежде договоримся о терминах.
Конструктором в Аксапте называется статичный метод Constuct. Его задача: создать экземляр класса конкретного типа на основании переданных параметров. См. раздел Construct class pattern в Best Practice. Цитата:
...use a construct method to instantiate the correct subclass for you
По идее, конструктор родителя иерархии классов должен вызывать контрукторы своих детей. Но в Аксапте разработчики "упростили" код и контруктор родителя всегда инициализирует детей через new. Т.е. по замыслу разработчиков конструктор должен быть один и должен находится в корне иерархии. (Если ты под конструктором подразумевал метод new, то я с тобой полностью согласен: у каждого класса должен быть свой new) |
|
![]() |
#3 |
Участник
|
Единственное упоминание слова constructor в "Construct class pattern" относится к new: "...have a no parameters, or the same parameters as the default new constructor (it is recommended that you do not have parameters on new)" |
|
![]() |
#4 |
Участник
|
Ищи слово construct.
![]() Вот еще с раздела Class constructors and destructors Цитата:
construct
The class hierarchy has one public constructor with no parameters that will deliver the correctly initialized class object. |
|