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