你不會(huì)預(yù)料一種新語言不支持面向?qū)ο蟮墓δ馨? C#當(dāng)然支持所有關(guān)鍵的面向?qū)ο蟮母拍?,如封裝、繼承和多態(tài)性。完整的C#類模式構(gòu)建在NGWS runtime的虛擬對(duì)象系統(tǒng)(VOS,Virtual Object System)的上層。對(duì)象模式只是基礎(chǔ),而不再是編程語言的一部分。
你一開始必須關(guān)注的,就是不再有全局函數(shù)、變量或者是常量。所有的東西都被封裝在類中,包括實(shí)例成員(通過類的實(shí)例——對(duì)象,可以訪問成員)或靜態(tài)成員(通過數(shù)據(jù)類型訪問)。這樣就使C#代碼更加易讀,且有助于減少潛在的命名沖突。
定義類中的方法默認(rèn)是非虛擬的(它們不能被派生類改寫)。主要論點(diǎn)是,這樣會(huì)消除由于偶爾改寫方法而導(dǎo)致另外一些原碼出錯(cuò)。要改寫方法,必須具有明確的虛擬標(biāo)志。 這種行為不但縮減了虛擬函數(shù)表的大小,而且還確保正確版本的控制。
使用C++編寫類,你可以使用存取修飾符為類成員設(shè)置不同的訪問等級(jí)。C#同樣支持private、protected 和public 三種存取權(quán)限 ,而且還增加了第四種:internal。
你創(chuàng)建了多少個(gè)類是從多重基類派生出來的(ATL 程序員,你的投票不計(jì)在內(nèi)!) ? 在大多數(shù)情況下,只要從一個(gè)類派生便可。多重基類惹出的麻煩通常比它們解決的問題還多。這就是為什么C#只允許一個(gè)基類。如果你覺得需要多重繼承,可以運(yùn)用接口。
一個(gè)可能出現(xiàn)的問題:在C#中不存在指針,如何模仿它? 這個(gè)問題的答案很有代表性,它提供了對(duì)NGWS runtime事件模式的支持。再次,我將把對(duì)它的全面解釋放到第五章。
新聞熱點(diǎn)
疑難解答