文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 601
阅读 8
收藏 0
说到"类", 就会提到:
属性方法事件 (这是类包含的内容);
封装继承多态 (这是类的主要用途).

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


//这是一个过程, 过程没有返回值
procedure MyProc(var x: Integer);
begin
  x := x * 2;
end;

//这是一个函数, 函数必须有返回值
function MyFun(var x: Integer): Integer;
begin
  x := x * 2;
  Result := x;
end;


//调用过程与函数
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i := 6;
  MyProc(i);                {使用过程}
  ShowMessage(IntToStr(i)); {12}

  i := 6;
  i := MyFun(i);            {使用函数}
  ShowMessage(IntToStr(i)); {12}
end;

end.

 
 
 
 
 

 

 

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Type
  TMyClass = class
    procedure MyProc(var x: Integer);
    function  MyFun (var x: Integer): Integer;
  end;
{
  上面定义了一个类, 其中包含了两个方法;
  函数与过程来到类里面一般叫做方法, 函数是有返回值的方法、过程是没有返回值的方法;

  在这里, 方法只有定义没有实现;
  但必须在本单元的 implementation 区内实现.

  下面就是两个方法的实现:
}

function TMyClass.MyFun(var x: Integer): Integer;
begin
  x := x * 2;
  Result := x;
end;

procedure TMyClass.MyProc(var x: Integer);
begin
  x := x * 2;
end;



//调用测试
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  myClass: TMyClass;          {对象声明}
begin
  myClass := 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;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

  {类定义, 因为已经在 Type 区了, 可以省略 Type 关键字}
  TMyClass = class
    procedure MyProc(var x: Integer);
    function  MyFun (var x: Integer): Integer;
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}


{TMyClass 中方法的实现}

function TMyClass.MyFun(var x: Integer): Integer;
begin
  x := x * 2;
  Result := x;
end;

procedure TMyClass.MyProc(var x: Integer);
begin
  x := x * 2;
end;



//调用测试
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  myClass: TMyClass;          {对象声明}
begin
  myClass := 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.cnblogs.com/del/archive/2008/01/11/1034510.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
UITableView初识(1)

第一:对于控件,我已说了几个,学习控件,就是学习控件的创建(图形界面的操作,代码的手动创建,外加对控件的封装); 第二个:就是这个控件的一些应用场景,应用于哪些场合。 第三个:那就是...

AppleDream
2016/05/22
21
0
java扫盲 接口 Enumeration

java扫盲 接口 Enumeration 摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 记起2年前,高中生活最多的是老师的批评。谢谢! -泥沙砖瓦...

泥沙砖瓦浆木匠
2014/08/12
0
0
初识Jackson

首先我们学习json的时候第一想到的是如何将JavaBean对象转化成Json字符串,或者怎样将json字符串转化成JavaBean对象。 一.JavaBean对象转化成Json字符串(串行化) 使用ObjectMapper object...

帅得拖网速
2016/08/11
60
0
初识rxjava(二)

上一篇,简单的认识了最近火爆异常的RxJava,如果你对RxJava还是很陌生,你可以去网上找一下相关知识,当然也可以看我的上一篇文章初识RxJava。这里我通过RxJava的使用场景之一——与Retrofi...

努力的右先生
2017/03/17
0
0
初识配置文件与反射

前言 在开始重构之前有一些疑惑点,配置文件以及反射。虽然之前听过过,但是不清楚是什么,先认识一番。 配置文件 定义 配置文件是用户登录电脑时,或是用户在使用软件时,软件系统为用户所要...

R_s_x
2017/11/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
32分钟前
1
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
48分钟前
4
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
3
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
1
0
mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部