一. 內建類定義:
//類的成員有:字段(field),方法(method)和屬性(property)
// 對象是類的實體,擁有:方法(method),事件(event)和屬性(property)
//對象不能操作到類所聲明的字段(成員變量),而且對象的屬性不完全等同於類的屬性
// 對象是類的實體,擁有:方法(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的成員,構造成對象後,根據性質劃分爲對象的屬性和事件
// 類的屬性是對象之間傳遞信息的接口,決定了對象內部數據的讀取及改變方式
// 一般常見屬性所指的是對象所具有的屬性
// 具體而言,類屬性是指開頭加property的成員,構造成對象後,根據性質劃分爲對象的屬性和事件
//此爲“屬性”的一部分,構造後爲:對象的屬性
published
property OnClickCheck: TNotifyEvent read FOnClickCheck write FOnClickCheck;
property Align;
//此爲“屬性”的一部分,構造後爲:對象的事件
property OnClick;
end;
二. 自定義類定義:
type Tchecked= object(Tcheck)
成員表;
end;
end;
三. 對象的構造與析構:
1.內建類:要用create和destroy
//對象構造方法定義必須以保留字“constructor”代替“procedure”或“function”
//析構函數用“destructor”
2.自定義類:不需要用create和destroy,就可以直接構造一個對象,接着也就可以操作對象的成員。
//此種方法構造的對象並未分配內存空間,只是跟一般變量一樣,當程序執行到該例程(routine),
//在編譯時先分配對象變量的內存空間,離開例程時,立即釋放內存空間。
//在內存空間的使用上,情況和記錄類(record)的變量相同。
//對象構造方法定義必須以保留字“constructor”代替“procedure”或“function”
//析構函數用“destructor”
2.自定義類:不需要用create和destroy,就可以直接構造一個對象,接着也就可以操作對象的成員。
//此種方法構造的對象並未分配內存空間,只是跟一般變量一樣,當程序執行到該例程(routine),
//在編譯時先分配對象變量的內存空間,離開例程時,立即釋放內存空間。
//在內存空間的使用上,情況和記錄類(record)的變量相同。
3.析構函數:
destroy是默認的析構方法,它只是刪除對象的變量,也就是刪除它的參考,而未刪除對象的
實體,而且也不能釋放對象所佔的實體空間。所以,程序未中止前,未釋放的內存空間就不能再用。
destroy是默認的析構方法,它只是刪除對象的變量,也就是刪除它的參考,而未刪除對象的
實體,而且也不能釋放對象所佔的實體空間。所以,程序未中止前,未釋放的內存空間就不能再用。
free不但具備destroy的功能,刪除對象變量,還可以將對象的實體釋放掉。且即使欲析構的
對象未構造實體,仍然可以正常執行,將所定義的對象刪除掉。
對象未構造實體,仍然可以正常執行,將所定義的對象刪除掉。