Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
ВнизНаследование интерфейсов Найти похожие ветки
← →
Ш-К (2005-07-27 17:09) [0]Вот такой код:
IDefault1 = interface(IInterface)
["{EB8F0FE2-D799-458C-91E1-65F9927F3BA3}"]
procedure NewMethod1;
end;
IDefault2 = interface(IDefault1)
["{49D546E5-94C2-495B-B7B7-91D6218030D3}"]
procedure NewMethod2;
end;
TDefault = class(TComponent, IDefault2)
public
procedure NewMethod1;
procedure NewMethod2;
end;
...
procedure TDefault.NewMethod1;
begin
ShowMessage("NewMethod1");
end;
procedure TDefault.NewMethod2;
begin
ShowMessage("NewMethod2");
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Def: TDefault;
IDef1: IDefault1;
IDef2: IDefault2;
begin
Def := TDefault.Create(nil);
try
if Def.GetInterface(IDefault1, IDef1) then
ShowMessage("Support IDefault1");
if Def.GetInterface(IDefault2, IDef2) then
ShowMessage("Support IDefault2");
finally
FreeAndNil(Def);
end;
end;
Как достучаться к IDefault1?
← →
Ш-К (2005-07-27 17:11) [1]Да. Собст-но, ShowMessage("Support IDefault1") не вызавается.
← →
jack128 © (2005-07-27 17:17) [2]Ш-К (27.07.05 17:09)
Как достучаться к IDefault1?
TDefault = class(TComponent, IDefault1, IDefault2)
то что ты поддерживаешь наследника не означает, что ты поддерживаешь предка. Это надо явно указывать..
← →
Ш-К (2005-07-27 17:28) [3]А какой смысл тогда в синтаксической конструкции наследования интерфейсов друг от друга?
← →
DiamondShark © (2005-07-27 17:35) [4]
> Ш-К (27.07.05 17:28) [3]
> А какой смысл тогда в синтаксической конструкции наследования
> интерфейсов друг от друга?
В наследовании.
В гарантированном воспроизведении порядка методов предка.
Кстати, итерфейс можно просто приводить к предку.
← →
Ш-К (2005-07-27 17:39) [5]Что такое "порядок методов предка"?
← →
DiamondShark © (2005-07-27 19:21) [6]
> Ш-К (27.07.05 17:39) [5]
> Что такое "порядок методов предка"?
То, как они расположены.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.021 c