理解 Delphi 的类(二) - 初识类的方法

news/2024/11/25 15:30:34/

说到"类", 就会提到: 
属性方法事件 (这是类包含的内容);
封装继承多态 (这是类的主要用途).



下面定义并调用了了一个过程 MyProc、一个函数 MyFun.


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}//这是一个过程, 过程没有返回值
procedure MyProc(var x: Integer);
beginx := x * 2;
end;//这是一个函数, 函数必须有返回值
function MyFun(var x: Integer): Integer;
beginx := x * 2;Result := x;
end;//调用过程与函数
procedure TForm1.Button1Click(Sender: TObject);
vari: Integer;
begini := 6;MyProc(i);                {使用过程}ShowMessage(IntToStr(i)); {12}i := 6;i := MyFun(i);            {使用函数}ShowMessage(IntToStr(i)); {12}
end;end.

把过程与函数 MyProc、MyFun 包含在一个类里面.


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}TypeTMyClass = classprocedure MyProc(var x: Integer);function  MyFun (var x: Integer): Integer;end;
{上面定义了一个类, 其中包含了两个方法;函数与过程来到类里面一般叫做方法, 函数是有返回值的方法、过程是没有返回值的方法;在这里, 方法只有定义没有实现;但必须在本单元的 implementation 区内实现.下面就是两个方法的实现:
}function TMyClass.MyFun(var x: Integer): Integer;
beginx := x * 2;Result := x;
end;procedure TMyClass.MyProc(var x: Integer);
beginx := x * 2;
end;//调用测试
procedure TForm1.Button1Click(Sender: TObject);
vari: Integer;myClass: TMyClass;          {对象声明}
beginmyClass := TMyClass.Create; {对象建立}i := 6;myClass.MyProc(i);          {调用方法}ShowMessage(IntToStr(i));   {12}i := 6;i := myClass.MyFun(i);      {调用方法}ShowMessage(IntToStr(i));   {12}myClass.Free;               {对象释放}
end;end.

一般情况下, 类都会定义在 interface 区; 在 implementation 区定义的类只能本单元使用.


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;{类定义, 因为已经在 Type 区了, 可以省略 Type 关键字}TMyClass = classprocedure MyProc(var x: Integer);function  MyFun (var x: Integer): Integer;end;varForm1: TForm1;implementation{$R *.dfm}{TMyClass 中方法的实现}function TMyClass.MyFun(var x: Integer): Integer;
beginx := x * 2;Result := x;
end;procedure TMyClass.MyProc(var x: Integer);
beginx := x * 2;
end;//调用测试
procedure TForm1.Button1Click(Sender: TObject);
vari: Integer;myClass: TMyClass;          {对象声明}
beginmyClass := TMyClass.Create; {对象建立}i := 6;myClass.MyProc(i);          {调用方法}ShowMessage(IntToStr(i));   {12}i := 6;i := myClass.MyFun(i);      {调用方法}ShowMessage(IntToStr(i));   {12}myClass.Free;               {对象释放}
end;end.

http://www.ppmy.cn/news/82498.html

相关文章

Unity3D :运行时 UI 的性能注意事项

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 运行时 UI 的性能注意事项 本页介绍如何提高运行时的性能用户界面 . 优化数据存储 您可以使用 usageHints 来设置元素在运行时的使用方式,以便相应地优化数据存储。例…

小松鼠踩一踩游戏

文章目录 一、 介绍和知识点九、UnityFacade 门面设计模式二、 声音全局管理器测试音频代码UI全局管理器父类抽象类 BaseManager子类 UIManager 四、 UI按钮的引用父类 BasePanel子类主面板 MainPanel子类 游戏中 GamePanel子类 游戏结果 ResultPanel 角色动画器、控制角色移动…

JAVA常用API - 正则表达式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一,正则表达式是什么? 二,正则表达式符号 三,常用正则表达式组合 四,正则表达…

由浅入深Netty代码调优

目录 1. 优化1.1 扩展序列化算法 2 参数调优2.1 CONNECT_TIMEOUT_MILLIS2.2 SO_BACKLOG2.3 ulimit -n2.4 TCP_NODELAY2.5 SO_SNDBUF & SO_RCVBUF2.6 ALLOCATOR2.7 RCVBUF_ALLOCATOR 1. 优化 1.1 扩展序列化算法 序列化,反序列化主要用在消息正文的转换上 序列…

Flink有状态计算的状态容错

状态容错 State Fault Tolerance 首先来说一说状态容错。Flink 支持有状态的计算,可以把数据流的结果一直维持在内存(或 disk)中,比如累加一个点击数,如果某一时刻计算程序挂掉了,如何保证下次重启的时候&…

CMake常用命令总结与练习

CMake常用命令总结 前言cmake_minimum_required (VERSION XX):CMake最低版本project (demo):CMake工程名add_executable(main main.c):生成可执行文件aux_source_directory(dir var):指定源文件放入变量set(val src):指定源文件放入变量include_director…

【AUTOSAR】【以太网】SomeIpTp

目录 一、概述 二、限制与约束 三、功能说明 3.1 SOME/IP帧头 3.1.1 消息类型字段

【设计模式】习题选择

设计模式习题 统一建模语言基础知识 1、在UML提供的图中,( )用于描述系统与外部系统及用户之间的交互; A、用例图 B、类图 C、对象图 D、部署图 2【单选题】 在UML提供的图中,( )用于按时间顺序…