Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Наследование интерфейсов


Ш-К ©   (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') не вызавается.


Наверх

Титульная страница Поиск, карта сайта Написать письмо