// 对象是类的实体,拥有:方法(method),事件(event)和属性(property)
//对象不能操作到类所声明的字段(成员变量),而且对象的属性不完全等同于类的属性
type
TCheckListBox = class(TCustomListBox)
//类名 //继承于TCustomListBox。若省略,继承于TObject;
//类的成员变量(字段),对象不能直接访问,要通过成员函数访问
private
FAllowGrayed: Boolean;
procedure ResetItemHeight;
//类的成员函数,属于“类方法”,只是在类中运行
procedure DrawCheck(R: TRect; AState: TCheckBoxState; AEnabled: Boolean);
procedure SetChecked(Index: Integer; AChecked: Boolean);
//一般成员函数,构造后为:对象的方法
protected
procedure CreateWnd; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
// 类的属性是对象之间传递信息的接口,决定了对象内部数据的读取及改变方式
// 一般常见属性所指的是对象所具有的属性
// 具体而言,类属性是指开头加property的成员,构造成对象后,根据性质划分为对象的属性和事件
//此为“属性”的一部分,构造后为:对象的属性
published
property OnClickCheck: TNotifyEvent read FOnClickCheck write FOnClickCheck;
property Align;
//此为“属性”的一部分,构造后为:对象的事件
property OnClick;
end;
type Tchecked= object(Tcheck)
end;
//对象构造方法定义必须以保留字“constructor”代替“procedure”或“function”
//析构函数用“destructor”
2.自定义类:不需要用create和destroy,就可以直接构造一个对象,接着也就可以操作对象的成员。
//此种方法构造的对象并未分配内存空间,只是跟一般变量一样,当程序执行到该例程(routine),
//在编译时先分配对象变量的内存空间,离开例程时,立即释放内存空间。
//在内存空间的使用上,情况和记录类(record)的变量相同。
destroy是默认的析构方法,它只是删除对象的变量,也就是删除它的参考,而未删除对象的
实体,而且也不能释放对象所占的实体空间。所以,程序未中止前,未释放的内存空间就不能再用。
对象未构造实体,仍然可以正常执行,将所定义的对象删除掉。