理解 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月前
|
编译器 C++
c++primer plus 6 读书笔记 第十章 对象和类
c++primer plus 6 读书笔记 第十章 对象和类
|
4月前
|
Java C++ 开发者
"深度剖析!接口VS抽象类、聚合VS组合...这6大OOP谜题,你真的全解开了吗?点击揭秘真相!"
【8月更文挑战第19天】接口与聚合是面向对象编程的关键,对于构建灵活、可扩展的软件系统至关重要。本文澄清六个常见疑惑:接口与抽象类的区别、为何使用接口、聚合与组合的不同、接口的新特性、聚合与继承的关系,以及如何合理选择接口、聚合和继承,助你深刻理解并准确应用这些核心概念。
43 0
|
7月前
|
Java C语言
【Java开发指南 | 第十二篇】Java循环结构
【Java开发指南 | 第十二篇】Java循环结构
36 2
|
7月前
|
存储 Java C#
静态字段科普:从原理到代码实践
静态字段科普:从原理到代码实践
64 0
|
JavaScript 前端开发
【重温基础】12.使用对象 上
【重温基础】12.使用对象 上
156 0
|
网络架构
【重温基础】12.使用对象 下
【重温基础】12.使用对象 下
119 0
|
Java 数据库
来自现实世界的邀请:映射转换 | 带你学《Java面向对象编程》之二十三
本节通过生活中常见的部门-雇员关系手把手带领读者将现实存在的数据表转化成Java实体类。
【自然框架】内部类库、控件的引用关系(最新整理,基本稳定)
  和以前相比,减少了一个项目,把Control_Interface合并到CommonFunction里面。这样引用关系就简单多了。   基本上分为三个层次:类库、自定义控件、页面基类。其中的 MetaData 负责元数据的定义和加载。
650 0