麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

將面向?qū)ο蟮乃枷胴灤┦冀K--談Delphi開發(fā)(第三篇)

2019-11-18 18:51:38
字體:
供稿:網(wǎng)友

(《將面向?qū)ο蟮乃枷胴灤┦冀K-Delphi開發(fā)》之第三篇)

       前兩篇討論的是有關(guān)封裝性的話題。這里,想和您說說關(guān)于繼承和多態(tài)。

       繼承和多態(tài)是密切相關(guān)的。Object Pascal引入了一種多態(tài)的機(jī)制,叫重載(Overload),它的思想與面向?qū)ο箨P(guān)系不大,這里不作討論。與面向?qū)ο笏枷朊芮邢嚓P(guān)的多態(tài)是我們著重要討論的。

多態(tài)依賴于抽象方法以及虛方法的概念,同時(shí)也和繼承密切相關(guān)。以為我們往往定義一些底層的對(duì)象,然后將其某些實(shí)現(xiàn)定義為抽象的,也就是說我們僅僅定義了接口,而沒有定義具體的實(shí)現(xiàn)細(xì)節(jié)。按照這樣的思路,我們還會(huì)定義多個(gè)派生(繼承)的對(duì)象,在這些對(duì)象中真正實(shí)現(xiàn)那些在祖先類中未曾實(shí)現(xiàn)的細(xì)節(jié)。這就使得我們先前定義的底層類,具有多態(tài)的特性。這種機(jī)制的好處在于,我們使用這些類的時(shí)候,只要一套代碼,就可以完成多種功能。而唯一需要改變的就是創(chuàng)建對(duì)象的實(shí)例的那一部分。

觀察這樣的一個(gè)類:

  TStream = class(TObject)

    ……

  public

    function Read(var Buffer; Count: Longint): Longint; virtual; abstract;

    function Write(const Buffer; Count: Longint): Longint; virtual; abstract;

    ……

  end;

   virual以及abstract保留字表明了Read以及Write方法是純虛函數(shù)。這表明TStream這個(gè)類并不能被真正使用(不能創(chuàng)建該類的實(shí)例),它只是一個(gè)類似于接口的類,它定義了作為TStream類應(yīng)當(dāng)具備以及需要處理的基本功能。而且它還規(guī)定,其他從TStream類派生出的類,必須去實(shí)現(xiàn)的功能(如Read以及Write等)。

舉例來說,TFileStream,以磁盤文件應(yīng)用的方式實(shí)現(xiàn)了TStream類;而TMemoryStream則以內(nèi)存應(yīng)用的方式實(shí)現(xiàn)了TStream類。現(xiàn)在假設(shè)有一個(gè)類TMyClass提供一個(gè)SaveToStream的方法:      

TMyClass = Class(TObject)

              PRocedure SaveToStream(Stream: TStream);

    end;

    則應(yīng)用多態(tài)的思想,可以有這樣的代碼:

var

strm: TStream;

MyClass: TMyClass;

       begin

strm := TFileStream.Create(‘a(chǎn)bc.txt’); // ß 此處Stream的真正實(shí)例類型是TFileStream

MyClass := TMyClass.Create;

MyClass.SaveToStream(strm);

…..

end;

而要將MyClass的內(nèi)容存放到內(nèi)存中,只需改變

strm := TFileStream.Create(‘a(chǎn)bc.txt’);

:

       strm := TMemoryStream.Create;

即可。

       多態(tài)的使用是需要兩方面的工作,其一當(dāng)然是類的構(gòu)架中考慮到了多態(tài),能夠提供實(shí)現(xiàn)某種功能的中間類(抽象類);其二,是懂得去運(yùn)用這些中間類,這個(gè)工作體現(xiàn)在定義一些過程,函數(shù)的參數(shù)上。

       另外很重要的一點(diǎn),我想提醒大家的是,類的規(guī)劃是很重要的,在面向?qū)ο缶幊痰臅r(shí)代,類的框架很大程度上決定了程序的框架,決定了軟件開發(fā)的成敗。結(jié)構(gòu)清楚,層次分明的類構(gòu)架,不僅易于功能劃分與擴(kuò)展,同時(shí)也更易于代碼的維護(hù)。而在這之中,應(yīng)用繼承和多態(tài)的思想,引入抽象類,引入中間類,是較為可取的一種方法。

 

以下列出Delphi中提供的一部分抽象類與具體類:

 

抽象類                  派生的具體類

TStream                TFileStreamTMemoryStream

TCustomIniFile       TIniFile, TMemIniFileTRegistryIniFile

TStrings                TStringListTMemoStringsTListBoxStrings

 

還有很多,等待你我去發(fā)現(xiàn)。這里最常用的是TStream,而最令我驚異的是TCustomIniFile,它的TRegistryIniFile允許你用訪問IniFile的方式來訪問注冊(cè)表!這使得我可以用一套代碼,實(shí)現(xiàn)寫注冊(cè)表和寫Ini文件的功能。這其中的技術(shù)雖然簡(jiǎn)單,但是它的意義非同凡響!

 

(未完,待續(xù))

更多文章


上一篇:用Delphi實(shí)現(xiàn)風(fēng)Word97風(fēng)格的工具欄

下一篇:Delphi中RichEdit的奧妙

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 大学生一级毛片在线视频 | 九九热这里只有精品8 | 一区二区三区欧美在线观看 | 新久草在线视频 | 在线影院av | 美女黄网站免费观看 | 中文字幕在线观看www | 亚洲精品一区中文字幕 | 欧美三日本三级少妇三级99观看视频 | 欧美一级黄色片免费观看 | 日韩色视频在线观看 | 成人免费在线视频播放 | 88xx成人精品视频 | 韩国三级日本三级香港三级黄 | 毛片免费观看视频 | 牛牛a级毛片在线播放 | 伊人二本二区 | www噜噜偷拍在线视频 | 久久久久久免费免费 | 成人 精品 | 欧美人禽 | 把娇妻调教成暴露狂 | 亚洲成人欧美在线 | 伊人在线 | h视频免费在线 | 97青青| 久久综合福利 | 久久艹艹艹 | 久久中文免费 | 精品国产九九九 | 国产午夜精品久久久 | 一色视频 | 欧美性视频一区二区 | 日韩视频一二区 | 一本在线高清码电影 | www国产免费| 欧美特级一级毛片 | 成人视屏在线观看 | 一本色道久久综合亚洲精品图片 | 欧美人成在线视频 | 久久精品久久久久 |