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

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

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

覆盖的Size属性添加了写限定符,允许属性能被修改;覆盖的Text和Color属性把可见性从protected改变为published;覆盖的Color属性还指定若它的值不为clBlue,它将被保存进文件。

若重新声明属性时包含类型标志符,这将隐藏继承下来的属性而不是覆盖它,也就是创建了一个(和继承下来的属性)具有相同名称的新属性。任何指定类型的属性声明必须是完整的,也就至少要包含一个访问限定符。

派生类中属性是隐藏还是覆盖呢?属性的查找总是静态的,也就是说,对象(变量)声明的类型决定了它的属性。所以,在下面的代码执行后,读取MyObject.Value或给它赋值将调用Method1或Method2,即使MyObject存储的是TDescendant的一个实例;但你可以把MyObject转换为TDescendant来访问派生类的属性和它们的访问限定符。

type

TAncestor = class

...

property Value: Integer read Method1 write Method2;

end;

TDescendant = class(TAncestor)

...

property Value: Integer read Method3 write Method4;

end;

var MyObject: TAncestor;

...

MyObject := TDescendant.Create;

Class references(类引用)

Class references: Overview(概述)

有时,我们需要使用类本身而不是它的实例(也就是对象),比如,当使用类引用来调用构造函数时。你总是能使用类名来引用一个类,但有时,你也需要声明变量或参数把类作为它的值,这种情况下,你需要使用类引用类型。

Class-reference types(类引用类型)

类引用类型有时称为元类,用如下的构造形式表示

class of type

这里,type是任何类类型。type(标志符)本身表示一个class of type(元类)类型的值。

的祖先类,则class of type2(元类)和class of type1(元类)是赋值兼容的。这样

type TClass = class of TObject;

var AnyObj: TClass;

声明了一个叫做AnyObj的变量,它能存储任何类引用。类引用类型的声明不能直接用于变量或参数声明中。你能把nil值赋给任何类引用变量。

要了解类引用类型如何使用,看一下TCollection(在Classes单元)的构造函数声明:

type TCollectionItemClass = class of TCollectionItem;

... 若type1是type2

- 113 -

Classes and objects

constructor Create(ItemClass: TCollectionItemClass);

上面声明说,要创建一个TCollection实例对象,你必须向构造函数传递一个类名,它属于TCollectionItem类或是它的派生类。

当你调用一个类方法,或者调用一个类(或对象)的虚构造函数(编译时它们的类型不能确定)时,类引用是很有用的。

Constructors and class references(构造函数和类引用)

构造函数可通过一个类引用类型的变量进行调用,这允许创建编译时类型并不确定的对象。比如, type TControlClass = class of TControl;


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

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

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