Delphi 系统[17]关键字和保留字 class -类

Delphi 系统[17]关键字和保留字  class -类

1、定义:

  • class:定义类的类型,或声明一个类方法。 
    • 类型必须先声明并给定名称,然后才能实例化(不能在变量声明中定义类类型。)仅在程序或单元的最外层范围内声明类,而不是在过程或函数声明中声明类。

2、示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{ 定义空类,默认继承自TObject }
type
  TMyObject = class
end;
  
{ 定义 TMyObject 类并测试类方法 }
type
  TMyObject = class(TObject)
  private
    FName: string;
  protected
  public
    class procedure ShowResult; { 定义类方法,类方法可以直接通过类调用 }
  published
    property Name: string read FName write FName;
  end;
  
{ 实现类方法 }
class procedure TMyObject.ShowResult;
begin
  ShowMessage('调用成功!');
end;
  
{ 调用类方法 }
procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyObject.ShowResult;  { 直接通过 TMyClass 调用,不用创建实例 }
end;

3、关于的其他说明:

1
2
3
type   className = class (ancestorClass)
  memberList
end;
  • 其中className是任何有效标识符,(ancestorClass)是可选的,memberList声明类的成员,即字段、方法和属性。
  • 如果省略(ancestorClass),则新类将直接从预定义的ToObject类继承。如果包含(ancestorClass)且memberList为空,则可以忽略end。
  • 类的类型声明还可以包括由该类实现的接口列表;请参阅实现接口。
  • 方法在类声明中显示为函数或过程标题,没有正文。为每个方法定义声明发生在程序的其他地方。

例如,下面是来自Classes单元的TMemoryStream类的声明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
type
TMemoryStream = class(TCustomMemoryStream)
  private
    FCapacity: Longint;
    procedure SetCapacity(NewCapacity: Longint);
  protected
    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(在类单元中)派生,继承其大多数成员。
  • 但是它定义了--或者重新定义了--几个方法和属性,包括它的析构函数方法 Destroy。
  • 它的构造函数Create是从TObject继承而来的,因此不会重新声明。
  • 每个成员声明为 private, protected, 或者 public (此类没有 published 的成员);有关这些术语的解释,请参见类成员的可见性。

根据此声明,您可以按如下方式创建TMemoryStream的实例:

1
2
3
4
5
var
  stream: TMemoryStream;
begin
  stream := TMemoryStream.Create;
end;

4、关于 类方法 的其他说明:

类方法是对类而不是对象进行操作的方法(构造函数除外)。类方法的定义必须以保留字类开始。例如:

1
2
3
4
5
6
7
type
  TFigure = class
  public
    class function Supports(Operation: string): Boolean; virtual;
    class procedure GetInfo(var Info: TFigureInfo); virtual;
    ...
  end;

类方法的定义声明也必须以类开头。例如:

1
2
3
4
class procedure TFigure.GetInfo(var Info: TFigureInfo);
begin
  ...
end;
  • 在类方法的定义声明中,标识符自身表示调用该方法的类(可以是定义该方法的类的后代)。
  • 如果在类C中调用该方法,则Self属于类C的类型。因此,不能使用Self访问字段、属性和普通(对象)方法,但可以使用它调用构造函数和其他类方法。
  • 类方法可以通过类引用或对象引用调用。
  • 当通过对象引用调用它时,对象的类成为Self的值。

  

 

 

 

创建时间:2021.08.12  更新时间:

 

posted on   滔Roy  阅读(371)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2020-08-12 Delphi XE10 错误提示:security alert vmware
2019-08-12 [原创]Delphi 字符串函数(字符串判断 TryStrToFloat 、TryStrToInt、TryStrToInt64、TryStrToBool、TryStrToCurr、TryStrToDate、TryStrToTime、TryStrToDateTime)

导航

点击右上角即可分享
微信分享提示