
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.218] |
![]() |
|
Страницы: (245) « Первая ... 226 227 [228] 229 230 ... 244 245 ( Перейти к последнему сообщению ) |
Сообщ.
#3406
,
|
|
|
Да очень просто! Ты подумай хорошо. ![]() ![]() |
Сообщ.
#3407
,
|
|
|
Сообщ.
#3408
,
|
|
|
Цитата Flex Ferrum @ Да очень просто! Ты подумай хорошо. Я то отлично подумал. Цитата Flex Ferrum @ У тебя фасад полностью отвечает за процесс конструирования и инициализации. Ты хоть там десять этапов наверни - всё пройдёт. И на всё это уже отвечал. Краткое содержание предыдущих серий: в каком реальном фрэймворке/библиотеке вам приходилось писать наследника с учётом двухэтапного конструирования, приведите пример. Он не полиморфен относительно объекта. Он зависит от метаобъектного протокола. |
Сообщ.
#3409
,
|
|
|
Цитата D_KEY @ Ну и что? Речь-то была о том, чтоб не вызвать методы еще несконструированного объекта. Теперь ты это не делаешь Конструктор от этого не перстает быть полиморфным ![]() Добавлено Цитата MyNameIsIgor @ Он зависит от метаобъектного протокола. Он зависит от конкретного класса создаваемого объекта и больше ни от чего. Это и есть полиморфизм относительно объекта |
Сообщ.
#3410
,
|
|
|
Цитата --Ins-- @ Конструктор от этого не перстает быть полиморфным ![]() Мне нет никакого дела до терминологии делфи ![]() ![]() Цитата Да и кстати я и раньше этого не делал - объект на этот момент уже есть. Но не полностью инициализированный Мы это уже 100500 раз обсуждали и к согласию не пришли. Пусть попробует кто-нибудь еще ![]() |
![]() |
Сообщ.
#3411
,
|
|
Цитата --Ins-- @ В принципе можно создать статик метод, возвращающий лист, и передавать его в конструктор, но мне страшно представить как такое будет выглядеть если у нас такое поле не одно, а штук пять-десять На то она и Джава. В более хороших языках всё просто. |
Сообщ.
#3412
,
|
|
|
Цитата --Ins-- @ Цитата MyNameIsIgor @ Он зависит от метаобъектного протокола. Он зависит от конкретного класса создаваемого объекта и больше ни от чего. Это и есть полиморфизм относительно объекта Ты вызваешь метод класса, а не объекта. К этому нет никаких претензий - из конструктора базового класса объекта можно вызывать виртуальные методы класса. Еще никто тебе не запрещает вызывать виртуальные методы другого объекта, например. Речь шла о вызове виртуальных методов конструируемого объекта из конструктора базового класса, еще раз повторяю ![]() |
Сообщ.
#3413
,
|
|
|
И вообще, мне кажется, что мы забываем про base from member - мы можем создать любую фабрику до конструирования предка, он ею своё поле и проинициализирует. Без всякой двухэтапки.
|
Сообщ.
#3414
,
|
|
|
Цитата D_KEY @ Ты вызваешь метод класса, а не объекта. Это устраняет вашу претензию, но не меняет сути - конструктор остается полиморфным, реализующим абстрактное поведение и делегирующим конкретику своим потомкам ![]() |
Сообщ.
#3415
,
|
|
|
Цитата --Ins-- @ Это устраняет вашу претензию, но не меняет сути Это лишь показывает, что вы нас всё это время не понимали. Суть наших претензий как раз и сводилась к вызову методов несконструированного ещё объекта, против некой "общей полиморфности" конструктора никто не возражал. |
![]() |
Сообщ.
#3416
,
|
|
И что, переопределенный классовый метод потомка будет иметь доступ к приватным членам родителя? Нет. Чем это тогда отличается от ![]() ![]() class Base { ... protected Base(T1 p1, T2 p2, ...) { ... } } class Derived extends Base { private static T1 makeP1() { ... } private static T2 makeP2() { ... } ... public Derived() { super(makeP1(), makeP2(), ...); ... } } ? |
Сообщ.
#3417
,
|
|
|
Цитата --Ins-- @ Цитата D_KEY @ Ты вызваешь метод класса, а не объекта. Это устраняет вашу претензию, но не меняет сути Сути чего, собственно? ![]() ![]() |
Сообщ.
#3418
,
|
|
|
Да, моя ошибка. ![]() Впрочем учитывая шутку 'ProblemFactory' про Java, понятно, какой паттерн джависты бы применяли для описанного тобой случая. Полиморфное конструирование - это фабрика. Я фабрики даже в Python делаю, в котором вообще абсолютная свобода в этом вопросе. |
Сообщ.
#3419
,
|
|
|
Цитата D_KEY @ Вот и приводите в качестве аргумента наличие классовых виртуальных методов, а не всякий трешак Это с какой итерации мы к этому пришли? ![]() |
![]() |
Сообщ.
#3420
,
|
|
Цитата --Ins-- @ реализующим абстрактное поведение и делегирующим конкретику своим потомкам Следи за руками. =) И можно использовать не только классовые функции. =) |