суббота, 11 мая 2013 г.

Вызов методов предка с ключевым словом inherited

Delphi позволяет нам использовать ДВЕ формы вызова родительского метода при помощи ключевого слова inherited.

С использованием имени метода:

procedure TSomeObject.Cleanup; // override
begin
 SomeOwnCode;
 inherited Cleanup;
end;


И без использования имени метода:

procedure TSomeObject.Cleanup; // override
begin
 SomeOwnCode;
 inherited;
end;


-- я лично при прочих равных - предпочитаю ВТОРУЮ форму.

Почему? Потому, что при активном рефакторинге и переименовании методов - она - УСТОЙЧИВЕЕ. Не надо бегать и синхронизировать имена методов.

Есть правда одна ЗАСАДА.

Если ВДРУГ написано так:

type
 TA = class
  protected
   procedure Cleanup; virtual;
 end;
 
 TB = class(TA)
  private
   procedure Cleanup; override;
 end;
 
 TC = class(TB)
  protected
   procedure Cleanup; override;
 end;


-- то при записи:

procedure TC.Cleanup; //override;
begin
 SomeOwnCode;
 inherited;
end;


Вызовется не тот метод, который мы ожидаем - TB.Cleanup, а метод TA.Cleanup. Хм.. (задумался)... Или НИЧЕГО не вызовет. Не помню. Склероз. Завтра - проверю.

Правда компилятор выдаст Warning о понижении видимости виртуального метода.

А при вызове:

procedure TC.Cleanup; //override;
begin
 SomeOwnCode;
 inherited Cleanup;
end;


-- нас обругает компилятор. Скажет - "не знаю такого метода в базовом классе".

1 комментарий:

  1. VarangaOfficial - противогрибковое средство варанга отзывы - проверенные и достоверные факты. Воспользовавшись данным интернет-порталом, вы получите возможность узнать исчерпывающую информацию касательно этого натурального лекарственного комплекса. Увидеть данные о проведенных клинических тестированиях, прочитать отзывы реальных покупателей и врачей. Ознакомиться с инструкцией по применению, прочесть особенности и методы работы мази, понять, в чем заключаются особенности работы крема Варанга, где можно заказать сертифицированный, оригинальный препарат и, как не нарваться на фальсификат. Мы очень тщательно и скурпулезно проверяем публикуемые данные. Предоставляем нашим пользователям сведения, взятые исключительно из достоверных источников. Если вы обнаружили признаки появления грибка или же долго и безрезультатно пытаетесь излечиться от этого коварного недуга, наш сайт покажет вам простой и быстрый способ устранения проблемы. Приобщайтесь и живите полноценной, здоровой жизнью. Все, что вы хотели знать, теперь можно найти на одном ресурсе.

    ОтветитьУдалить