類的學習

一.  內建類定義:
    //類的成員有:字段(field),方法(method)和屬性(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的成員,構造成對象後,根據性質劃分爲對象的屬性和事件
 
  //此爲“屬性”的一部分,構造後爲:對象的屬性
  published
    property OnClickCheck: TNotifyEvent read FOnClickCheck write FOnClickCheck;
    property Align;
 
   
    //此爲“屬性”的一部分,構造後爲:對象的事件
    property OnClick;
 
  end;
二.  自定義類定義:

type Tchecked= object(Tcheck)
     成員表;
     end;
 
三.  對象的構造與析構:
     1.內建類:要用create和destroy
 
       //對象構造方法定義必須以保留字“constructor”代替“procedure”或“function”
       //析構函數用“destructor”
 
     2.自定義類:不需要用create和destroy,就可以直接構造一個對象,接着也就可以操作對象的成員。
       
       //此種方法構造的對象並未分配內存空間,只是跟一般變量一樣,當程序執行到該例程(routine),
       //在編譯時先分配對象變量的內存空間,離開例程時,立即釋放內存空間。
       //在內存空間的使用上,情況和記錄類(record)的變量相同。
     3.析構函數:
            destroy是默認的析構方法,它只是刪除對象的變量,也就是刪除它的參考,而未刪除對象的
       實體,而且也不能釋放對象所佔的實體空間。所以,程序未中止前,未釋放的內存空間就不能再用。
            free不但具備destroy的功能,刪除對象變量,還可以將對象的實體釋放掉。且即使欲析構的
       對象未構造實體,仍然可以正常執行,將所定義的對象刪除掉。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章