C++三大特性:封裝,繼承,多型
封裝可以隱藏實現細節,使得程式碼模組化,繼承可以擴充套件已存在的模組,它們目的都是為了:程式碼重用。而多型是為了實現另一個目的:介面重用。
什麼是多型?
eg:開門,開窗戶,開電腦,這裡“開”就是多型。
多型性可以簡單概括為“一個介面,多種實現”,是通過虛擬函式實現的。基類提供一個虛介面,其派生類重寫這個介面,這樣就構成了多型。
面向物件———封裝(特性之一)
封裝是面向物件的特徵之一,是物件和類概念的主要特性。封裝是把過程和資料包圍起來,對資料的訪問只能通過已定義的介面。面向物件計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的物件,這些物件通過一個受保護的介面訪問其他物件。一旦定義了一個物件的特性,則有必要決定這些特性的可見性,即哪些特性對外部世界是可見的,哪些特性用於表示內部狀態。在這個階段定義物件的介面。通常,應禁止直接訪問一個物件的實際表示,而應通過操作介面訪問物件,這稱為資訊隱藏。事實上,資訊隱藏是使用者對封裝性的認識,封裝則為資訊隱藏提供支援。封裝保證了模組具有較好的獨立性,使得程式維護修改較為容易。對應用程式的修改僅限於類的內部,因而可以將應用程式修改帶來的影響減少到最低限度。
封裝:是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。
封裝好處:
1.將變化隔離;
2.便於使用。
3.提高重用性。
4.提高安全性。
封裝原則:
將不需要對外提供的內容都隱藏起來。
把屬性都隱藏,提供公共方法對其訪問。
private:關鍵字
A:用於修飾成員變數和成員方法。
B:被修飾的內容在其他類中是不可以被訪問的。
注意:私有僅僅是封裝的一種體現而已。
面向物件———繼承(特性之二)
繼承是一指一個物件從另一個物件獲得功能的過程,它提供了一種明確表述共性的方法。是一個不斷向上抽取的過程
例如:所有的Windows應用程式都有一個視窗,它們可以看作都是從一個視窗類派生出來的。但是有的應用程式用於文書處理,有的應用程式用於繪圖,這是由於派生出了不同的子類,各個子類添加了不同的特性。
繼承與封裝可以共同作用.如果一個給定的類封裝了某些屬性,它的任何子類將會繼承同樣得屬性,另加各個子類所有得特有屬性。
繼承優點:
1,提高了程式碼的複用性。
2,讓類與類之間產生了關係。有了這個關係,才有了多型的特性。
面向物件———多型(特性之三)
多型簡單說,就是某一類事物多種存在形態。例如,貓對應的型別是貓型別,但同時他也是動物中的一種,也可以把貓稱為動物。又比如,同樣的選擇編輯-貼上操作,在字處理程式和繪圖程式中有不同的效果。多型性包括引數化多型性和包含多型性。多型性語言具有靈活、抽象、行為共享、程式碼共享的優勢,很好的解決了應用程式函式擴充套件性。
1,多型的體現
父類的引用指向了自己的子類物件。
父類的引用也可以接收自己的子類物件。
2,多型的前提
必須是類與類之間有關係。要麼繼承,要麼實現。
通常還有一個前提:存在覆蓋。
3,多型的好處
多型的出現大大的提高程式的擴充套件性。
4,多型的弊端
提高了擴充套件性,但是隻能使用父類的引用訪問父類中的成員。
---------------------
作者:Doo66
來源:CSDN
原文:https://blog.csdn.net/doo66/article/details/52208922
版權宣告:本文為博主原創文章,轉載請附上博文連結!