1、 interface 是申明了一些函数,自己本身没有实现部分,需要由继承它的类来实现函数。
2、interface 可以被不同的类继承,并且函数的实现方法各不相同。
3、继承interface 的类,必须包含全部interface的函数,否则无法编译通过。
4、接口都是从 Interface 继承而来,
IMyInterface2 = interface
procedure Proc1;
procedure Proc2;
end;
5、接口成员只能是方法、属性, 没有字段,并且都是公开的, 不需要 private、protected、public、published 等任何访问限制。
6、一个类可以实现多个接口: TMyClass = class(父类, 接口1, 接口2, ...) end
7、不论实现接口的类有多么丰富,,接口只拥有自己声明的成员
8、实现接口的类一般继承于 TInterfacedObject.
TMyClass1 = class(TInterfacedObject, IMyInterface1, IMyInterface2)
9、接口在用完后会自释放, 并同时释放拥有它的类。
10、也可以使用nil手动释放接口
var
i: IMyInterface;
begin
i := TMyClass.Create;
i.Proc;
i := nil; //可以这样主动释放接口; 同时拥有它的类也会释放
11、interface的属性,可参考
万一老师的博文