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

首頁 > 編程 > Delphi > 正文

DELPHI面向?qū)ο笾С痔攸c--保護級類成員的應(yīng)用

2019-11-18 17:57:08
字體:
供稿:網(wǎng)友

今天在CSDN論壇里面游逛,發(fā)現(xiàn)這樣的一個帖子《剛才看到一位武林高手的幾行精妙代碼,百思不得其解,希望各位指點》,本著向各大武林高手學(xué)習(xí)的態(tài)度,我看完了整個帖子,發(fā)現(xiàn)內(nèi)容甚為經(jīng)典,記錄于此,作個總結(jié): 


 type
  TStringGridEx = class(TStringGrid);

PRocedure TForm1.Button1Click(Sender: TObject);
begin
  if TStringGridEx(StringGrid1).RowCount > 5 then
    TStringGridEx(StringGrid1).DeleteRow(5);
end;
---------------------------------------------------------

這是要在StringGrid中刪除一行的代碼。這個問題我搞了2個小時沒有搞定,然后就搜帖子,發(fā)現(xiàn)這位高人的代碼,簡直敬佩之情如黃河之水綿綿不絕,運行也通過。但是為啥TStringGridEx = class(TStringGrid);這個東西就可以有DeleteRow()方法呢?它明明也是繼承的TStringGrid,和TStringGrid是一樣的???我頭都大了!希望各位指點!


以上就是樓主提問內(nèi)容,問題的確奇怪,經(jīng)過各大掌門的討論得出了一個DELPHI特有的保護級成員的應(yīng)用特點,這應(yīng)該也是DELPHI獨有的一個面向?qū)ο笾С痔攸c,總結(jié)如下:


1.TForm里面可以訪問到TStringGridEx的protected成員,因為它們定義在同一個單元里面
2.TForm里面不能訪問到TStringGrid的protected成員,因為他們不是定義在同一個單元里面
3.由于TStringGridEx = class(TStringGrid),所以在這里訪問TStringGridEx的protected成員就相當于訪問TStringGrid的protected成員
4.TStringGridEx只是一個中介,功能沒有擴展但是把TStringGrid的作用域引入到這個單元中來了,所以TForm可以訪問TStringGrid的protected成員了

掌門一的看法是DELPHI的PROTECTED和PRIVATE成員對于同一UNIT里面的各種類和對象都是可見的,而且PROTECTED成員可以在友員子類的UNIT中可見,于是TStringGridEx 哪怕只是繼承了TStringGrid沒作任何修改,也令TStringGrid中的PROTECTED成員在TStringGridEx的UNIT中可見(這其中還有一個原因是TStringGrid并不是定義在本UNIT,所以只能通過繼承使本UNIT成為友員,使TStringGrid的PROTECTED成員開放),問題解決了。我們也從中可以一窺DELPHI的面向?qū)ο筇攸c。


 掌門二的評論:在同一個單元定義的兩個類甚至可以互相訪問對方的private成員
雖然方便了開發(fā),但是很能迷惑初學(xué)者
甚至感覺不夠嚴謹

不過反正delphi也風(fēng)光不再了,湊乎用吧
掌門三的評論:沒有完美的東西??!只有適合的東西哦!
掌門四的評論:protected起來的方法一般是隱藏的,所以直接生成該類的實例是不能引用該方法的,但是在delphi中將位于同一個單元的類自動認為是友類,可以訪問其protected方法,所以在相應(yīng)單元中寫一個子類的實現(xiàn)就可以看到protected起來的方法了
 


 個人覺得DELPHI對PROTECTED和PRIVATE在本單元可見的做法既方便了程序員又迷惑了程序員,使得很多以上的例子滿奇怪的,當然這也令程序員增加了許多創(chuàng)造發(fā)揮技巧的機會,以上例子就是一個巧妙應(yīng)用技巧的經(jīng)典范例,不過個人覺得這些機會還是少一點好。無論如何,可讀性才應(yīng)該是程序員真正追求的代碼境界,這些奇怪的技巧性代碼,如果我使用其他語言一段時間以后再回來看它,可能怎樣都無法想到問題的解答。不過既然選擇的DELPHI也就選擇了它的缺點,這有點像一對相愛的戀人,選擇了對方也就等于選擇了他的優(yōu)點和缺點,世上本沒有完美的東西,我們只能適應(yīng)不完美,追求完美。



上一篇:WINDOWS編程技巧之DELPHI篇

下一篇:Delphi中的包(三):bpl和dll

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

新聞熱點

疑難解答

圖片精選

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

主站蜘蛛池模板: 国产寡妇xxxxxxxx性开放 | 久久国产综合视频 | 国产成人在线免费看 | 一区二区国产在线 | 美女视频黄a视频免费全过程 | 媚药按摩痉挛w中文字幕 | 久久精品久久精品国产大片 | www.国产一区.com | 依依成人精品视频 | 日本欧美一区二区三区在线播 | sesee99| 欧美精品久久久久久久久久 | 色999中文字幕 | 二区三区在线观看 | 久久久久久久久久久综合 | 国产精品免费久久久 | 香蕉成人在线视频 | 久久精品视频亚洲 | 韩日黄色片 | 99久久婷婷国产综合精品青牛牛 | 欧美成人精品不卡视频在线观看 | 黄色免费在线网站 | 国产亚洲精品网站 | 精品一区二区三区不卡 | 久国产精品视频 | 亚洲国产高清自拍 | 国产成人在线视频 | 久久99精品久久久久久国产越南 | 精品一区二区电影 | 日本在线不卡一区二区三区 | 久久久国产一级片 | 免费网站看v片在线a | 免费观看黄色一级视频 | 国产亚洲在 | 91九色电影 | 成人在线免费观看网址 | 欧美成人免费一级 | 国产精品免费麻豆入口 | 亚洲四播房 | 高清中文字幕在线 | 91成人免费在线观看 |