Главная страница
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.056 c
14-1121920522
Fin
2005-07-21 08:35
2005.08.14
Для чего нужна папка temp&


14-1122286791
NewWonder
2005-07-25 14:19
2005.08.14
Экзамен по информатике: нужна помощь


3-1120455337
-=snoop=-
2005-07-04 09:35
2005.08.14
как определить - выделенна запись в таблице или нет


14-1122109559
lookin
2005-07-23 13:05
2005.08.14
Что вы получите? Маленький тест.


4-1119458310
XCept.ion
2005-06-22 20:38
2005.08.14
Kейлоггинг