![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наследование интерфейсов
Ш-К © (2005-07-27 17:09:00)Вот такой код:
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?
DiamondShark (2005-07-27 19:21:00) [1]
> Ш-К (27.07.05 17:39) [5]
> Что такое "порядок методов предка"?
То, как они расположены.
Ш-К (2005-07-27 17:39:00) [2]Что такое "порядок методов предка"?
DiamondShark (2005-07-27 17:35:00) [3]
> Ш-К (27.07.05 17:28) [3]
> А какой смысл тогда в синтаксической конструкции наследования
> интерфейсов друг от друга?
В наследовании.
В гарантированном воспроизведении порядка методов предка.
Кстати, итерфейс можно просто приводить к предку.
Ш-К (2005-07-27 17:28:00) [4]А какой смысл тогда в синтаксической конструкции наследования интерфейсов друг от друга?
jack128 (2005-07-27 17:17:00) [5]Ш-К (27.07.05 17:09)
Как достучаться к IDefault1?
TDefault = class(TComponent, IDefault1, IDefault2)
то что ты поддерживаешь наследника не означает, что ты поддерживаешь предка. Это надо явно указывать..
Ш-К (2005-07-27 17:11:00) [6]Да. Собст-но, ShowMessage('Support IDefault1') не вызавается.