![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наследники абстрактных классов [D7, XP]
SergP © (2015-02-28 14:31:00)Обязательно ли в наследнике абстрактного класса реализовывать все методы, объявленные в родительском классе как абстрактные, если планируется создание объектов - экземпляров этого класса?
Или достаточно реализовать только необходимые методы?
Rouse_ (2015-02-28 23:47:00) [1]Скажем... Для заполнения 4 байт в vmt ;)
(2015-02-28 23:45:00) [2]Удалено модератором
(2015-02-28 23:42:00) [3]Удалено модератором
(2015-02-28 23:41:00) [4]Удалено модератором
(2015-02-28 23:39:00) [5]Удалено модератором
кгшзх (2015-02-28 23:18:00) [6]зачем нужна директива abstract, если уже есть virtual?
да как это зачем?
написав это колдунство в декларации функции экномитсо:
- целых три нажатия клавиш ctrl+shift + c
- которые бы создали аш целых две строчки с пустой реализацией функции.
а если в масштабах всей страны?
гигаватты же экономятсо
Ega23 (2015-02-28 23:06:00) [7]Удалено модератором
DVM (2015-02-28 18:37:00) [8]
> SergP © (28.02.15 15:31) [3]
> А насчет архитектуры - цель простая, а архитектура мутноватая,
> пока это самое оптимальное что пришло в голову...
> Наследников абстрактного класса планируется довольно много,
> и абстрактных методов многовато. И вот интересуюсь на начальном
> этапе дабы избежать большого кол-ва лишней и ненужной писанины.
>
>
>
Может быть интерфейсы помогут навести некоторый порядок?
Rouse_ (2015-02-28 16:14:00) [9]
> Т.е. ворнинги возможны только в случаях попытки вызова нереализованных
> методов? Но такого не планируется...
Нет, в рантайме ты получишь исключение.
Ворнинги будут только на этапе компиляции.
> Наследников абстрактного класса планируется довольно много,
> и абстрактных методов многовато.
Здесь вот уже становится интересно.
Просто для справки - абстрактный класс есть суть базового алгоритма от которого плодятся наследники оного, развивая суть алгоритмической задачи.
Если ты придумал класс с двумя абстрактными методами и в наследнике перекрыл только один из них, это не страшно. Технически (при такой постановке задачи) ты пишешь еще один наследник, перекрывающий второй абстрактный вызов и вуаля - используем его.
Но: если ты начнешь использовать в своем ПО только первый наследник (с неперекрытым вызовом) - хвала тебе и почет, именно о таких случаях пишут в различных юморных колонках: "как еще можно выстрелить себе в ногу при помощи Delphi"
кгшзх (2015-02-28 16:07:00) [10]Т.е. ворнинги возможны только в случаях попытки вызова нереализованных методов?
ЕАбстрактЕррор на рантайме тебе будет, а не ворнинг на компиляции.
SergP (2015-02-28 15:31:00) [11]
> Rouse_ © (28.02.15 14:35) [2]
>
> Не обязательно, но будут ворнинги.
Т.е. ворнинги возможны только в случаях попытки вызова нереализованных методов? Но такого не планируется...
А насчет архитектуры - цель простая, а архитектура мутноватая, пока это самое оптимальное что пришло в голову...
Наследников абстрактного класса планируется довольно много, и абстрактных методов многовато. И вот интересуюсь на начальном этапе дабы избежать большого кол-ва лишней и ненужной писанины.
Rouse_ (2015-02-28 14:35:00) [12]Не обязательно, но будут ворнинги.
Вообще пересмотри архитектуру проекта, финальный наследник должен перекрывать все методы, иначе что-то не то с подходом
junglecat (2015-02-28 14:33:00) [13]обязательно