На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (20) « Первая ... 10 11 [12] 13 14 ...  19 20 все  ( Перейти к последнему сообщению )  
> Как вы относитесь к паскалю? , (есть гипотеза)
   
Как вы относитесь к паскалю?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    ExpandedWrap disabled
      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;


    в чём подвох?
      В питоне проще, там ссылочная архитектура и в наследовании используется. То есть там на самом деле всё наследование виртуальное. Для C++ это привело бы к дополнительным издержкам.
        Цитата applegame @
        Цитата D_KEY @
        Что, наследование - это плохо, да?
        Местами да, плохо.

        Местами плохо все :D
          Цитата D_KEY @
          Что, наследование - это плохо, да?

          Я этого не говорил.
            Shaggy, и никаких warnings?
              Цитата korvin @
              Цитата D_KEY @
              Что, наследование - это плохо, да?

              Я этого не говорил.

              Тогда я не понял, что ты имел в виду.

              Добавлено
              Цитата amk @
              В питоне проще, там ссылочная архитектура и в наследовании используется. То есть там на самом деле всё наследование виртуальное. Для C++ это привело бы к дополнительным издержкам.

              В питоне происходит линеаризация иерархии, если что.
                Цитата D_KEY @
                Тогда я не понял, что ты имел в виду.

                То что, если ты привык забивать гвозди, не значит, что к шурупам молоток тоже подойдет.
                  Так вот кто придумал дюбель-гвозди с резьбой!
                    Цитата Qraizer @
                    Shaggy, и никаких warnings?

                    нет, с чего бы?
                      Ну как же, ведь TB реализует IB не полностью. В Плюсах аналогичная картина, и не все компилеры при этом варнингуют.
                        Цитата Qraizer @
                        Ну как же, ведь TB реализует IB не полностью

                        Реализует то он как раз полностью. В плюсах это было бы реализацией коцепта - концепт IB тип TB реализует.
                        В шарпе тоже в таком случае всё отлично.
                        Цитата Qraizer @
                        В Плюсах аналогичная картина, и не все компилеры при этом варнингуют

                        В плюсах нет интерфейсов, и потому там мы наследуемся от абстрактного класса, а не реализуем интерфейс.
                          Цитата Qraizer @
                          Ну как же, ведь TB реализует IB не полностью

                          интерфейс требует наличия в классе двух методов
                          класс их предоставляет
                          сигнатуры совпадают
                          больше ничего не требуется
                            Цитата MyNameIsIgor @
                            В плюсах нет интерфейсов, и потому там мы наследуемся от абстрактного класса, а не реализуем интерфейс.
                            Вот это кстати да. В Дельфях это, пожалуй, не нужно. Интерфейс суть однозначно интерфейс.
                            Shaggy, то же и в Плюсах, сходи по ссылке. Однако в отличие от, не всё так однозначно. По ссылке автор напутал с виртуальным и невиртуальным наследованием, просто сделав по шаблону из литератур, авторов которых за неполноту раскрытия темы следовало бы линейкой по рукам. Результатом сего компилятор смутился и, несмотря на корректный достигнутый результат, заявил о своём смущении.

                            Добавлено
                            Ну ладно, а если мы возьмём две реализации двух интерфейсов? Нужно будет агрегировать или сводить к единому предку?
                              Цитата Qraizer @
                              Ну ладно, а если мы возьмём две реализации двух интерфейсов? Нужно будет агрегировать или сводить к единому предку?

                              например так:
                              ExpandedWrap disabled
                                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;


                              но объединить интерфейсы нельзя
                              конструкция
                              ExpandedWrap disabled
                                type
                                  IC = interface(IA,IB)
                                  ...
                                  end;

                              недопустима
                                Цитата Shaggy @
                                но объединить интерфейсы нельзя

                                Что ж так? Во всех остальных языках с интерфейсами — можно.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (20) « Первая ... 10 11 [12] 13 14 ...  19 20 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1006 ]   [ 18 queries used ]   [ Generated: 27.07.26, 12:39 GMT ]