protected ,你只能在程序TObject。如
- 95 - 的方法创建和销毁。声明类的各成员,也就是
Classes and objects
function Realloc(var NewCapacity: Longint): Pointer; virtual;
property Capacity: Longint read FCapacity write SetCapacity;
public
destructor Destroy; override;
procedure Clear;
procedure LoadFromStream(Stream: TStream);
procedure LoadFromFile(const FileName: string);
procedure SetSize(NewSize: Longint); override;
function Write(const Buffer; Count: Longint): Longint; override;
end;
TMemoryStream是TStream(在Classes单元中)的后代,继承了它的大部分成员,但又定义(或重新定义)了几个方法和属性,包括它的析构(destructor)函数Destroy。它的构造函数
没有任何改变,所以没有重新声明。每个成员被声明为private、protected或者
成员),关于这些术语的解释,请参考Visibility of class members。
给定上面的声明,你可以像下面一样创建TMemoryStream的一个实例:
var stream: TMemoryStream;
stream := TMemoryStream.Create;
Inheritance and scope(继承和作用域)
Inheritance and scope(继承和作用域)
当你声明一个类时,可以指定它的父类,比如,
type TSomeControl = class(TControl);
定义了一个叫做TSomeControl的类,它继承自TControl。一个类自动从它的父类继承所有的成员,且可以声明新成员,也可以重新定义继承下来的成员,但不能删除祖先类定义的成员。所以,
包含了在TControl以及它的每个祖先中定义的所有成员。
类成员标志符的作用域开始于它声明的地方,直到类声明的结束,并且扩展到它的所有子类声明的地方,以及类和子类的所有方法的定义区(也就是方法的定义部分)。
TObject and TClass(TObject和TClass)
类TObject在System单元声明,是所有其它类的最终祖先。TObject只定义了少数方法,包括一个基本的构造函数和析构函数。除了TObject,System单元还声明了一个类引用类型
TClass = class of TObject;
如果在类声明中没有指定父类,则它直接继承于TObject,所以
type TMyClass = class
...
end;
等同于
type TMyClass = class(TObject)
...
end;
后者可读性较好,推荐使用。
- 96 - Createpublic(这个类没有TClass。TObject继承,publishedTSomeControl从
Classes and objects
Compatibility of class types(类类型兼容性)
类和它的祖先类是赋值兼容的,所以,某个类类型的变量能引用它的任何子类类型的实例。比如,在下面的声明中
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-69.html
土地谁说了算