type
TFigure = class(TObject);
TRectangle = class(TFigure);
TSquare = class(TRectangle);
var
Fig: TFigure;
变量Fig能被赋予TFigure、TRectangle和TSquare类型的值。
Object types(Object类型)
除了类类型,你可以使用如下语法声明一个object类型
type objectTypeName = object (ancestorObjectType)
memberList
end;
这里,objectTypeName是任何有效标志符,(ancestorObjectType)是可选的,memberList声明字段、方法和属性。若(ancestorObjectType)被省略了,则新类型没有祖先。Object类型不能有published成员。 因为object类型不是从TObject继承,它们没有内置的构造函数和析构函数,也没有其它方法。你能使用New过程创建Object类型的实例,并使用Dispose过程销毁它们,你也可以像使用记录一样,采用简单方式声明object类型的变量。
Object类型只是为了向后兼容性,不推荐使用它们。
Visibility of class members(类成员的可见性)
Visibility of class members(类成员的可见性)
类的每个成员都有一个称为可见性的属性,我们用下面的关键字之一来表示它:private、protected、public、published和automated。比如
published property Color: TColor read GetColor write SetColor;
声明一个叫做Color的published属性。可见性决定了一个成员在哪些地方以及如何能被访问,private表示最小程度的访问能力,protected表示中等程度的访问能力,public、published和automated表示最大程度的访问能力。
若声明一个成员时没有指定其可见性,则它和前面的成员拥有相同的可见性;若在类声明的开始没有指定可见性,当在{$M+}状态下编译类时(或者继承自一个在{$M+}状态下编译的类),它的默认可见性是published,否则,它的可见性是public。
为可读性考虑,最好在声明类时用可见性来组织成员:把所有的private成员组织在一起,接下来是所有的protected成员,依此类推。用这种方法,每个可见性关键字最多出现一次,并且标明了每个新段的开始。所以,一个典型的类声明应该像下面的形式:
type
TMyClass = class(TControl)
- 97 -
Classes and objects
private
... { private declarations here}
protected
... { protected declarations here }
public
... { public declarations here }
published
... { published declarations here }
end;
通过重新声明,你可以在派生类中增大一个成员的可见性,但你不能降低它的可见性。比如,一个protected属性在派生类中能被改变为public,但不能改为private。还有,published成员在子类中不能改为public。要了解更多信息,请参考Property overrides and redeclarations。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-70.html
我需要输入登录名个密码的wifi