Delphi 接口(3)
2021-07-04 04:29
标签:chinese 第一个 creat style interface ring proc begin 接口 在这个例子中: *Greeting被声明为IGreetable类型的变量,因为TChinese声明实现的接口中没有列出IGreetable. 所以TChinese类型的实例不能赋值给Greeting.如果改变TChinnese的声明为: 那么,第一个作物语句将变得可用: *AMan被声明为IMan类型的变量,虽然它可以引用TChinese类型的实例,但是我们不能用它访问TChinese的SeChinese方法,因为该方法不是IMan接口的方法.但是改变AMan的声明为: 那么第二个错误语句将变得可用: Delphi 接口(3) 标签:chinese 第一个 creat style interface ring proc begin 接口 原文地址:https://www.cnblogs.com/YiShen/p/9862789.htmltype
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;
TChinese = class(TinterfaceObject,IGreetable,IMan)
Greeting := TChinese.create;//错误->可用
AMan: Tchinese;
AMan.SetChinese(‘张三‘); //错误->可用