C++三個特性是封裝,繼承,多態。我在這裡只是概括一下他們的概念以及作用,要展開去將他們,不是一時半會兒能說明白的,我覺得大家可能都想著去將它深層的東西,所以我就簡單的談談他們的作用。
封裝。在面向對象設計中,封裝是指數據和實現操作的代碼集中起來放在對象內部,並盡可能隱蔽對象的內部細節。對象好像是一個不透明的黑盒子,從外面是看不見的,更不能從外面直接訪問或修改這些數據以及代碼。我們將對象的特性稱為“成員變量”,將對象的行為成為“成員函數”,被封裝的特性只能通過特定的行為去訪問。
所謂封裝具有兩方面的含義:一是將有關的數據和操作代碼封裝在一個對象中,各個對象相互獨立,互不干擾。二是將對象中某些數據與操作代碼對外隱蔽,即隱蔽其內部細節,只留下少量接口,以便與外界聯系,接收外界消息。
封裝的好處是:將對象的使用者和設計者分開,大大降低了人們操作對象的復雜程度。使用者不必知道對象行為的實現細節,只需要使用者提供的接口即可自如地操作對象。封裝的結果實際上隱蔽了復雜性,並提供了代碼重用性,從而減輕了開發一個軟件系統的難度。
繼承。繼承是面向對象另一個很有吸引力的特性就是繼承,繼承就是事物具有祖先特性,當然事物還可以具有自己的特性。具體都的說,繼承機制允許派生類繼承基類的數據和操作,也就是說允許派生類使用基類的數據和操作,同時派生類還可以增加新的數據和操作。
我認為繼承的主要作用是可以讓我們站在巨人肩上進行開發,如果沒有繼承機制,每次的軟件開發都要從“一無所五”開始,這將嚴重影響開發的效率。采用繼承的方法可以很方便地利用一個已有的類建立一個新的類,這就可以重用已有軟件中的一部分甚至大部分,這樣減少了代碼的重復開發,增加了程序的可重用性,減少開發時間,這一點也就是常說的“軟件重用”思想。
繼承的種類其實是很復雜的,單繼承,多繼承,鑽石繼承,多層繼承,虛繼承,虛鑽石繼承等等,這些講起來需要花費很大的功夫(這裡就不細講了)
多態。面向對象中的多態不同的對象收到相同的消息時產生多種不同的行為。實現多態的方法主要兩種,一種是編譯時多態,主要由重載和模板來實現;一種是運行時多態,主要由虛函數(包括繼承)來實現。
多態性增加了軟件的靈活性以及重用性,為軟件的開發和維護提供了極大的便利,尤其是采用了虛函數和動態連編機制後,允許用戶更為明確,易懂的方式去建立通用的軟件。