Как вы относитесь к паскалю?
, (есть гипотеза)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
| Страницы: (20) « Первая ... 10 11 [12] 13 14 ... 19 20 все ( Перейти к последнему сообщению ) |
Как вы относитесь к паскалю?
, (есть гипотеза)
|
Сообщ.
#166
,
|
|
|
|
![]() ![]() type IA = interface procedure A; end; type TA = class(TInterfacedObject,IA) procedure A; end; type IB = interface(IA) procedure B; end; type TB = class(TA,IB) procedure B; end; в чём подвох? |
|
Сообщ.
#167
,
|
|
|
|
В питоне проще, там ссылочная архитектура и в наследовании используется. То есть там на самом деле всё наследование виртуальное. Для C++ это привело бы к дополнительным издержкам.
|
|
Сообщ.
#168
,
|
|
|
|
|
Сообщ.
#170
,
|
|
|
|
Shaggy, и никаких warnings?
|
|
Сообщ.
#171
,
|
|
|
|
Тогда я не понял, что ты имел в виду. Добавлено Цитата amk @ В питоне проще, там ссылочная архитектура и в наследовании используется. То есть там на самом деле всё наследование виртуальное. Для C++ это привело бы к дополнительным издержкам. В питоне происходит линеаризация иерархии, если что. |
|
Сообщ.
#172
,
|
|
|
|
Цитата D_KEY @ Тогда я не понял, что ты имел в виду. То что, если ты привык забивать гвозди, не значит, что к шурупам молоток тоже подойдет. |
|
Сообщ.
#173
,
|
|
|
|
Так вот кто придумал дюбель-гвозди с резьбой!
|
|
Сообщ.
#174
,
|
|
|
|
Цитата Qraizer @ Shaggy, и никаких warnings? нет, с чего бы? |
|
Сообщ.
#175
,
|
|
|
|
Ну как же, ведь TB реализует IB не полностью. В Плюсах аналогичная картина, и не все компилеры при этом варнингуют.
|
|
Сообщ.
#176
,
|
|
|
|
Цитата Qraizer @ Ну как же, ведь TB реализует IB не полностью Реализует то он как раз полностью. В плюсах это было бы реализацией коцепта - концепт IB тип TB реализует. В шарпе тоже в таком случае всё отлично. Цитата Qraizer @ В Плюсах аналогичная картина, и не все компилеры при этом варнингуют В плюсах нет интерфейсов, и потому там мы наследуемся от абстрактного класса, а не реализуем интерфейс. |
|
Сообщ.
#177
,
|
|
|
|
Цитата Qraizer @ Ну как же, ведь TB реализует IB не полностью интерфейс требует наличия в классе двух методов класс их предоставляет сигнатуры совпадают больше ничего не требуется |
|
Сообщ.
#178
,
|
|
|
|
Цитата MyNameIsIgor @ Вот это кстати да. В Дельфях это, пожалуй, не нужно. Интерфейс суть однозначно интерфейс.В плюсах нет интерфейсов, и потому там мы наследуемся от абстрактного класса, а не реализуем интерфейс. Shaggy, то же и в Плюсах, сходи по ссылке. Однако в отличие от, не всё так однозначно. По ссылке автор напутал с виртуальным и невиртуальным наследованием, просто сделав по шаблону из литератур, авторов которых за неполноту раскрытия темы следовало бы линейкой по рукам. Результатом сего компилятор смутился и, несмотря на корректный достигнутый результат, заявил о своём смущении. Добавлено Ну ладно, а если мы возьмём две реализации двух интерфейсов? Нужно будет агрегировать или сводить к единому предку? |
|
Сообщ.
#179
,
|
|
|
|
Цитата Qraizer @ Ну ладно, а если мы возьмём две реализации двух интерфейсов? Нужно будет агрегировать или сводить к единому предку? например так: ![]() ![]() type IA = interface procedure A; end; type TA = class(TInterfacedObject,IA) procedure A; end; type IB = interface procedure B; end; type TB = class(TInterfacedObject,IB) procedure B; end; type TC = class(TInterfacedObject,IA,IB) private FA:IA; FB:IB; property A:IA read FA implements IA; property B:IB read FB implements IB; end; но объединить интерфейсы нельзя конструкция ![]() ![]() type IC = interface(IA,IB) ... end; недопустима |
|
Сообщ.
#180
,
|
|
|
|
Цитата Shaggy @ но объединить интерфейсы нельзя Что ж так? Во всех остальных языках с интерфейсами — можно. |