请帮我解释一下这段程序,我看不懂!(20分)

闷闷

Unregistered / Unconfirmed
GUEST, unregistred user!
program ImplementInterface


type
IMyInterface = interface
procedure P1

procedure P2

end


TMyImplClass = class
procedure P1

procedure P2

end


TMyClass = class(TInterfacedObject, IMyInterface)
FMyImplClass: TMyImplClass

property MyImplClass: TMyImplClass read FMyImplClass implements IMyInterface

end


procedure TMyImplClass.P1

begin
WriteLn('P1')

end


procedure TMyImplClass.P2

begin
WriteLn('P2')

end


var
MyClass: TMyClass

MyInterface: IMyInterface

begin
MyClass := TMyClass.Create

MyClass.FMyImplClass := TMyImplClass.Create

MyInterface := MyClass

MyInterface.P1;
MyInterface.P2;
ReadLn

end.
 
这是一段关于接口和类的区别和各自实现的例程.
接口很像类,但接口没有数据,没有字段,没有实例数据,想下面的声明是完全非法的:
type IMyInterface = interface
FMyData:Integer;//这是非法的
procedure P1;
procedure P2

end

同时,接口中的全部成员默认为公共,不能在接口上加入任意范围指令,例如:private
不能直接实现接口,接口只是定义了一个规范,要实现接口里的方法必须经由类.
就是先创建一个类的实例,然后通过一个简单的赋值语句就创建了一个到接口的引用.
但是在此之前你必须声明该类是该接口的实现,声明的方法上面已经给出.
 
g:eek:nly you
类默认从TObject继承,接口默认从IUnKnown继承。
 
多人接受答案了。
 
顶部