標籤:
物件導向編程強調抽象、封裝、繼承、多態
抽象:我們在定義一個抽象類別的時候,實際上就是把一類事物共有的屬性和行為提取出來,形成一個物理模型(模版),這種研究問題的方法稱為抽象。你可以這樣來想,抽象就是一個類的最基礎的東西,比方說人,他的抽象類別可能就是都從母體出來,有皮膚。但具體到你是黑人,白人,還得黑人類,白人類來說明 。
封裝:就是將類的屬性包裝起來,不讓外界輕易的知道他的內部實現。只提供給你對外的介面讓你來調用。好處可以增強模組的獨立性。如設定屬性或方法的存取權限(private、protected、public、預設)。
繼承:就是從父類把它的有用的東西拿過來自己用,不用在自己去實現了,像母親會把雙眼皮傳給女兒,不用她自己去割了 。
多態:一個物件變數可以指向多種實際類型的現象。一個人,在不同場合下,有不同的身份,不同的狀態。比如在家裡,你是父母的孩子;在學校,你就是學生;在公司,你就是老闆的職員。再比如在介面總定義一個run()方法,是什麼在跑,汽車還是馬?通過不同類的實現來表示相似的邏輯。
順便說一下重載和重寫(覆蓋)的區別:
重載:相同的方法名,不同的實現機制(通過傳入不同個數或類型的參數)。當程式運行過程中自己去判斷到底該調用誰。比方說打人,那麼多人,當你打起群架來,該打誰就打誰,事前你也不知道。
重寫:從父類繼承而來的方法不能滿足需要的情況下,可以將此方法的邏輯在子類中重新實現。我們最常用的就是重寫toString()方法了。
所謂的物件導向就是將我們的程式模組化,對象化,把具體事物的特性屬性和通過這些屬性來實現一些動作的具體方法放到一個類裡面,這就是封裝.封裝是我們所說的物件導向編程的特徵之一.除此之外還有繼承和多態.繼承有點類似與我們生物學上的遺傳,就是子類的一些特徵是來源於父類的,兒子遺傳了父親或母親的一些屬性,或者相貌,又或者是運動天賦.有點種瓜得瓜種豆得豆的意思.物件導向裡的繼承也就是父類的相關的屬性,可以被子類重複使用,子類不必在自己的類裡面重新定義一回,父類裡有點我們只要拿過來用就可以了.而對於自己類裡面需要用到的新的屬性和方法,子類可以自己來擴充.當然,會出現一些特殊情況,就是我們在有一些方法在父類已經定義好了,但是子類我們自己用的時候,發現,其實,我們的雖然都是分析資料的,但是天氣資料的分析方法跟經濟資料的分析方法是不一樣的,所以這個時候我們就不能直接調用父類的這個分析資料的方法了.這個時候我們需要用到物件導向的另一個特性,多態.對就是多態,我們要在子類裡面把父類裡面定義分析資料的方法在子類裡面重新實現一遍.多態包含了重載和重寫.重寫很簡單就是把子類從父親類裡繼承下來的方法重新寫一遍,這樣,父類裡面相同的方法就被覆蓋了,當然啦,你還是可以通過super.AnalyData方法來調用父類的分析資料方法.而重載就是類裡面相同方法名,不同形參的情況,可以是形參類型不同或者形參個數不同沒或者形參順序不同,但是不恩給你使返回值類型不同.
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
對物件導向編程的認識