Delphi中的结构体与类
结构体与类的概述
结构体可以看作轻量级的类。
从使用的方式上讲,结构体定义了便可直接使用,而类必须创建该类的对象才可使用。
从内存的管理上讲,结构体对内存的占用是由应用自动维护的,而类则需要手动创建该类的对象,当我们不再需要时要手动释放。
注意:相比轻量级的结构体,重量级的类可以有更复杂的功能,同时类更加地体现面向对象的思想。
结构体与类的定义
结构体与类的定义使用的关键字不同,分别是:record、class。
type
{使用record定义一个结构体}
MyRecord = record
{定义结构体的属性}
name: String;
{定义结构体的过程}
procedure showName;
{定义结构体的方法}
function getName(): String;
end;
{使用class定义一个类}
MyClass = class
{定义类的属性}
name: String;
{定义类的过程}
procedure showName;
{定义类的方法}
function getName(): String;
end;
结构体与类中过程与方法的具体实现
{ MyRecord }
function MyRecord.getName: String;
begin
Result := name;
end;
procedure MyRecord.showName;
begin
showMessage(name);
end;
{ MyClass }
function MyClass.getName: String;
begin
Result := name;
end;
procedure MyClass.showName;
begin
showMessage(name);
end;
end.
结构体与类的使用
procedure TForm1.Button1Click(Sender: TObject);
var
{在此声明结构体后便可直接使用}
mRecord: MyRecord;
{在此声明类后还需要创建该类的对象}
mClass: MyClass;
begin
{操作结构体中的属性、过程、方法}
mRecord.name :='mRecord_name';
showMessage(mRecord.name);
showMessage(mRecord.getName);
mRecord.showName();
{这里需要先创建类的对象}
mClass := MyClass.Create();
{操作类中的属性、过程、方法}
mClass.name :='mClass_name';
showMessage(mClass.name);
showMessage(mClass.getName);
mClass.showName();
end;