Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Наследование интерфейсов   Найти похожие ветки 

 
Ш-К   (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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.11 c
9-1114182546
[EViL]
2005-04-22 19:09
2005.08.14
Проблемы с выстрелами, а вернее, с убийством себе подобных.


10-1099388768
sergvc
2004-11-02 12:46
2005.08.14
Не могу зарегистрировать СОМ компонент


14-1121844334
msguns
2005-07-20 11:25
2005.08.14
Барабашка ?


11-1105444581
admdenis
2005-01-11 14:56
2005.08.14
Constructor в KOL?


14-1122308065
Agent13
2005-07-25 20:14
2005.08.14
Spamers must die!