1. 程式人生 > >Delphi 接口(3)

Delphi 接口(3)

我們 但是 spa ace 語句 訪問 正常 clas function

type  

IGreetable = interface
end;

IMan = interface(IGreetable)
    function SayHello():string;
end;

TChinese = class(TinterfacedObject,IMan)
    procedure SetChinese(name: string);
    function SayHello():string;
end;

procedure MyProcedure()
var
    AMan: IMan;
    Greeting: IGreetable;
begin
    AMan :
= TChinese.create; //工作正常 Greeting := TChinese.create;//錯誤 AMan.SetChinese(張三); //錯誤 AMan.SayHello; //工作正常 end;

在這個例子中:

  *Greeting被聲明為IGreetable類型的變量,因為TChinese聲明實現的接口中沒有列出IGreetable.

  所以TChinese類型的實例不能賦值給Greeting.如果改變TChinnese的聲明為:

TChinese = class(TinterfaceObject,IGreetable,IMan)

  那麽,第一個作物語句將變得可用:

Greeting := TChinese.create;//錯誤->可用

  *AMan被聲明為IMan類型的變量,雖然它可以引用TChinese類型的實例,但是我們不能用它訪問TChinese的SeChinese方法,因為該方法不是IMan接口的方法.但是改變AMan的聲明為:

AMan: Tchinese;

  那麽第二個錯誤語句將變得可用:

AMan.SetChinese(張三);    //錯誤->可用

Delphi 接口(3)