b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(109)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

IWindow

procedure Draw;// TframeWindow重新实现// 这是静态方法,隐藏了父类的方法...

end;

重新实现一个接口隐藏了它继承下来的实现,因此,祖先类中的方法解析子句对于重新实现的接口没有影响。

Implementing inteces by delegation(通过委托实现接口) Implementing inteces by delegation(通过委托实现接口)

implements指示字允许你在实现类中委托一个属性来实现接口,比如

property MyIntece: IMyIntece read FMyIntece implements IMyIntece; 上面声明了一个叫做MyIntece的属性,它实现了接口IMyIntece。

在属性声明中,implements指示字必须是最后一项,它可以实现多个接口,接口之间以逗号分隔。委托的属性要满足以下条件:

? 必须是类或接口类型;

? 不能是数组属性,也不能使用index限定符;

? 必须有一个读限定符。若属性使用read方法,则方法必须使用默认的register调用约定,并且不能

是动态方法(但可以是虚方法),也不能使用message指示字。

注意:实现委托接口的类应当从TAggregatedObject派生。

- 145 -

Object inteces

Delegating to an intece-type property(委托一个接口类型的属性)

如果委托的属性是接口类型,那么此接口(或者它的派生接口)必须出现在类声明中的祖先列表中(也就是声明实现这些接口)。委托的属性必须返回一个对象,此对象所属的类完全实现了implements所指明的接口,并且没有使用方法解析子句。比如

type

IMyIntece = intece

procedure P1;

procedure P2;

end;

TMyClass = class(TObject, IMyIntece)

FMyIntece: IMyIntece;

property MyIntece: IMyIntece read FMyIntece implements IMyIntece; end;

var

MyClass: TMyClass;

MyIntece: IMyIntece;

begin

MyClass := TMyClass.Create;

MyClass.FMyIntece := ... // 某个实现了IMyIntece 接口的对象

MyIntece := MyClass;

MyIntece.P1;

end;

Delegating to a class-type property(委托一个类类型属性)

如果委托属性是一个类类型,那么在定位实现的方法时,会先搜索这个类以及它的祖先类,然后再搜索当前类(也就是定义属性的类)以及它的祖先类。所以,可以在属性指定的类中实现某些方法,而另一些方法在当前类实现。可以象平常一样使用方法解析子句来避免含糊的声明,或者(只是)使用一个特别的方法声明。一个接口不能委托给多个类类型的属性实现。比如

type

IMyIntece = intece

procedure P1;

procedure P2;

end;

TMyImplClass = class

procedure P1;

procedure P2;

end;

TMyClass = class(TIntecedObject, IMyIntece)

FMyImplClass: TMyImplClass;


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-109.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...