Delphi物件導向學習(-)

來源:互聯網
上載者:User

標籤:

Delphi物件導向學習隨筆一:類與對象的關係
巴哈姆特
http://www.cnpack.org
(轉載請註明出處並保持完整)
工作幾年了,總想做點總結,於是有了這篇東西,叫隨筆吧呵
    本文只是寫寫我對對象化的理解,主觀成分很多,或許有錯誤,希望大家指正^_^
    PS: 本文的示範代碼均以Delphi 的Object Pascal文法為準。

類與對象的關係
    要討論類與對象的關係,需要先說一下什麼是類,什麼是對象。

  
    類、我認為是一個集合,和數學中的集合一樣,是一類事物的統稱,例如“人類”。
    在電腦語言中,類和數組或結構等資料類型一樣是使用者(程式員)自訂的資料類型,但是我們常說,類是複雜的自訂類型,而其他的資料類型則稱為簡單的自訂類型。原因是因為類是有行為的!
    另外、類是抽象存在的,就拿“人類”來說,我們都知道,在這個世界上是存在人類的,但是誰能說清楚“人類”長什麼樣?有多重?

  對象
    對象則是類中的一個個體,例如我或者是正在看這篇文章的你,都是“人類”中的一個個體。
    電腦語言中,你是無法讓一個類直接為你工作的(有些帶類方法的特殊情況除外),就像世界上沒有任何一個人有能力讓整個“人類”為你工作一樣;那麼要讓你的類為你工作,我們就需要這個類的一個對象,當我們有了一個對象以後,那麼我們才能讓他為我們做我們想要做的事。

  執行個體化對象:
    我們都知道,在當前的電腦作業系統中,任何軟體運行都需要一個記憶體塊,也就是生存空間。同樣,對象也要,就像我們生下來就要佔地方一樣。在你要讓一個類的對象為你工作之前,你需要為他分配一個記憶體空間並建立它,這也是和其他的資料類型不一樣的地方:

var  i: Integer;      //定義一個整形變數i  s: TStringList; //定義一個TStringList類的對象sbegin  i:= 0;  { 這是對的,因為當定義了一個int類型(簡單類型)的變數後,    編譯器會自動為你這個變數分配記憶體空間 }  s.LoadFromFile(...);  { 錯誤,因為定義這個對象前,還沒有為他建立記憶體空間,    直接這樣執行會引起一個記憶體錯誤 }end;

 

正確的方法應該是,在使用類的對象前,要顯示的調用類的構造方法:

CODE:  s:= TStringList.Create;

 

或許有朋友會說,為什麼不是s.Create呢?那是因為,在執行這條代碼前,還沒有為s分配記憶體空間,是不能訪問他內部的資料成員的,而前面說了,“類是抽象存在的”,所以在編譯器為你的代碼打包成可執行檔後,TStringList在記憶體中已經存在了。當然這種“類名.方法名”的調用方式只能用在類(靜態)方法上,而類的構造器的入口則是必須靜態存在的。

屬性、方法、事件
    屬性是類的特性:例如紅色的汽車,紅色就是這輛汽車的顏色屬性
    方法則是我們傳統意義上的函數或過程,也就是類可以做的事:例如汽車可以向前開,也可以向後開
    事件則是在特定條件下,被動調用的程式碼片段,也就是說,事件中我們指定填寫的代碼可能我們沒有手動調用,但是它卻可能在一個特定的條件下被對象內部調用而得到執行(當然不排除你顯示的手動調用)。

    暫時先說到這裡,套用一句評書中的話:“預知後事如何,且聽下回分解”^_^

Delphi物件導向學習(-)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.