Delphi 接口(3)
阿新 • • 發佈:2018-10-27
我們 但是 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)