理解 Delphi 的类(一) - 从结构/记录谈起

简介: 理解 Delphi 的类(一) - 从结构/记录谈起

类的概念

类是一种用户自定义的数据类型,可以说它是对某一类事物的抽象描述。


类使用属性和方法来描述某一事务的具体特性和行为。


简单举个例子:将轮船作为类进行描述,轮船不单单指一个物体,而是一类的总称。所以可以不考虑大小,颜色……而是将它抽象为一个类,对应的大小,颜色就可以在类中以属性的形式体现,而轮船在水中运动就是它的方法,所以一个类就是由属性和方法组成的。

记录

现在我们在学习类之前先看看结构,也叫做记录。


Delphi中的记录和类一样都是一种自定义类型,结构直接使用,内存是自动管理的;


类只是一个模板,需要我们根据模型(类)来创建(Create函数)出对象才能够使用,这个过程就叫做类的实例化操作,用完之后需要手动释放。


类中是可以有方法的,而结构里面只能有变量。


下面演示之前我是在form上先画了一个button按钮,对按钮进行操作。

unit Unit_Class01;
interface
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
type
  TMyRecord = record    {定义结构}
    d: TDate;
end;
  TMyClass = class      {定义类;没有实际意义只是演示}
    d: TDate;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  MyRec: TMyRecord;     {声明一个结构变量}
  MyCls: TMyClass;      {声明一个类变量,也就是对象}
begin
  {使用结构}
  MyRec.d := Now;
  ShowMessage(DateToStr(MyRec.d));
  ShowMessage(IntToStr(SizeOf(MyRec)));     {8;结构的大小是 8 }
  {使用类}
   MyCls := TMyClass.Create;                {需要先手动建立,因为类需要实例化为对象才可以使用}
   MyCls.d := Now;
   ShowMessage(DateToStr(MyCls.d));
   ShowMessage(IntToStr(SizeOf(MyCls)));    {4;因为mycls对象是一个指针}
   MyCls.Free;                              {用完后释放}
  {
      结构与对象(类的实例)在内存中以不同的方式存放,对象只是一个指针;
      和结构相比,类拥有着更强大的功能!
  }
end;
end.

输出结果如下:

结构和类的区别

由上面代码可以看出来在使用的时候,类就是比记录多了一个实例化,但是类是可以镶嵌方法的,而记录不行,就比如我现在要去用面向对象的方法来在做一个通讯录系统,这个时候如果我该怎么定义呢,应该是先定义一个记录体,这是单个人的,再定义一个类,就以班级为例,班级类中放的是记录的数组,这样就可以对整体进行增删改查了,而不是对个人进行CRUD操作。





相关文章
|
6月前
|
XML JSON 算法
【软件设计师备考 专题 】编写内部设计文档:构件划分图和接口
【软件设计师备考 专题 】编写内部设计文档:构件划分图和接口
104 0
|
5月前
|
Java
JavaSE——面向对象基础(4/4)-成员变量和局部变量的区别、面向对象综合案例(电影信息系统)
JavaSE——面向对象基础(4/4)-成员变量和局部变量的区别、面向对象综合案例(电影信息系统)
18 0
|
存储 C语言
《C和指针》读书笔记(第十章 结构和联合)(下)
《C和指针》读书笔记(第十章 结构和联合)(下)
|
存储 C语言 C++
《C和指针》读书笔记(第十章 结构和联合)(上)
《C和指针》读书笔记(第十章 结构和联合)(上)
|
编译器 C#
【C#本质论 六】类-从设计的角度去认知(封装)(下)
【C#本质论 六】类-从设计的角度去认知(封装)(下)
87 0
|
存储 Java 程序员
【C#本质论 六】类-从设计的角度去认知(封装)(上)
【C#本质论 六】类-从设计的角度去认知(封装)(上)
109 0
|
编译器 C#
【C#本质论 七】类-从设计的角度去认知(继承)(下)
【C#本质论 七】类-从设计的角度去认知(继承)(下)
67 0
|
存储 开发框架 .NET
【C#本质论 七】类-从设计的角度去认知(继承)(上)
【C#本质论 七】类-从设计的角度去认知(继承)(上)
92 0
|
算法 程序员 网络架构
带你读《计算机程序的构造和解释(原书第2版)典藏版》之二:构造数据抽象
《计算机程序的构造和解释(原书第2版)》1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序的构造和解释(原书第2版)》对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。
【自然框架】内部类库、控件的引用关系(最新整理,基本稳定)
  和以前相比,减少了一个项目,把Control_Interface合并到CommonFunction里面。这样引用关系就简单多了。   基本上分为三个层次:类库、自定义控件、页面基类。其中的 MetaData 负责元数据的定义和加载。
647 0
下一篇
无影云桌面