Rainex
@Rainex

Как вызвать метод предка в методе предка?

Имеется абстрактный класс TBase, от него наследуется класс TList. А от TList наследуется ещё один класс Т2List. И вот сам вопрос как вызвать метод из метода класса TList, при условии что методы перекрыты во втором классе. inherited позволяет вызвать метод предка, но если в методе предка есть функции которые определены в текущем классе то выполняются они, а мне нужно что бы вызывались именно предка
  • Вопрос задан
  • 2630 просмотров
Пригласить эксперта
Ответы на вопрос 2
@M_PRO
На сколько я понял есть:
TMyObject = class(TObject)
  procedure DoA; virtual;
  procedure DoB; virtual;
end;

TMyObject2 = class(TMyObject)
  procedure DoA; override;
  procedure DoB; override;
end;

...

TMyObject.DoA;
begin
   DoB;
end;

TMyObject.DoB;
begin
  WrtieLn('MyObject');
end;

TMyObject2.DoA;
begin
   inherited DoA; // fix
end;

TMyObject2.DoB;
begin
  WriteLn('MyObject2');
end;


И вы ожидаете получить в результате вызова метода DoA класса TMyObject2, исправив строку с пометкой fix
строку MyObject в консоли строку MyObject вместо MyObject2.

Ответ: это не возможно.

Решение:
1. Если классы написаны Вами - думать над проектированием.
2. Если классы написаны не Вами - думать о том, как их использовать. Возможно "патчить" исходники если совсем припёрло. В таком случае нужна существенно более подробная информация.
Ответ написан
kylt_lichnosti
@kylt_lichnosti
Попробуйте еще раз сформулировать вопрос. И перед этим, немного разобраться в терминологии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы