Повторное введение функций в Delphi - PullRequest
32 голосов
/ 10 сентября 2008

Что послужило причиной наличия ключевого слова reintroduce в Delphi?

Если у вас есть дочерний класс, который содержит функцию с тем же именем, что и у виртуальной функции в родительском классе, и он не объявлен с модификатором override, то это ошибка компиляции. Добавление модификатора reintroduce в таких ситуациях исправляет ошибку, но я никогда не понимал причины ошибки компиляции.

Ответы [ 11 ]

0 голосов
/ 27 июня 2015

reintroduce позволяет объявить метод с тем же именем, что и у предка, но с другими параметрами. Это не имеет ничего общего с ошибками или ошибками !!!

Например, я часто использую его для конструкторов ...

constructor Create (AOwner : TComponent; AParent : TComponent); reintroduce;

Это позволяет мне создавать внутренние классы более чистым способом для сложных элементов управления, таких как панели инструментов или календари. У меня обычно больше параметров, чем это. Иногда почти невозможно или очень грязно создать класс без передачи некоторых параметров.

Для визуальных элементов управления Application.Processmessages может вызываться после Create, что может быть слишком поздно для использования этих параметров.

constructor TClassname.Create (AOwner : TComponent; AParent : TComponent);
begin
  inherited Create (AOwner);
  Parent      := AParent;
  ..
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...