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

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

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

procedure AfterConstruction; override;

procedure BeforeDestruction; override;

class function NewInstance: TObject; override;

property RefCount: Integer read FRefCount;

end;

TIntecedObject实现了IIntece接口,因此,TIntecedObject声明和实现了IIntece的三个方法。 实现接口的类可以被当作基类(前面第一个例子中,TmemoryManager就是以TIntecedObject作为基类)。因为每个接口都继承自IIntece,所以,一个实现接口的类必须实现QueryIntece、_AddRef和_Release方法。System单元中的TIntecedObject实现了这些方法,所以,其它实现接口的类可以方便地通过继承它来实现。

当一个接口被实现时,它声明的每个方法都将和它的实现类中的方法一一对应:有相同的返回值类型、相同的调用约定、同样数目的参数,并且参数的类型和位置是相同的。默认情况下,接口中的方法对应于实现类中同名的方法。

Method resolution clauses(方法解析子句,方法别名)

在声明类时,通过方法解析子句你可以改变默认的名称映射。当一个类实现两个或多个接口、并且其中有同名的方法时,使用方法别名可以避免混乱。

方法解析子句采用如下格式

procedure intece.inteceMethod = implementingMethod;

function intece.inteceMethod = implementingMethod;

这里,implementingMethod是在这个类或它的一个祖先类中声明的方法。implementingMethod可以是此类中稍后声明的方法;当implementingMethod是祖先类的方法时,若祖先类不在同一个模块中,则方法不能是私有的。(因为不能访问另一个模块中的私有成员)

比如,下面的类声明

type

TMemoryManager = class(TIntecedObject, IMalloc, IErrorInfo)

function IMalloc.Alloc = Allocate;

procedure IMalloc.Free = Deallocate;

- 144 -

Object inteces

...

end;

把IMalloc接口的Alloc和Free方法分别映射到TMemoryManager类的Allocate和Deallocate方法。 方法解析子句不能更改祖先类引入的方法映射。

Changing inherited implemetations(更改继承实现)

通过覆盖实现方法,子类可以改变接口方法的实现方式,这要求实现方法是虚拟的或者是动态的。 一个类也可以重新(完整地)实现它从祖先类继承下来的接口,这要求它在声明时重新列出这个接口。例如

type

IWindow = intece

['{00000115-0000-0000-C000-000000000146}']

procedure Draw;

...

end;

TWindow = class(TIntecedObject, IWindow) // Twindow实现IWindow

procedure Draw;

...

end;

TFrameWindow = class(TWindow, IWindow)


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

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

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