面向對象及其核心的概念:抽象、繼承與多態、封裝

面向對象的思想是上個世界60年代出現的,一些比較典型的面向對象的編程語言包括JAVA、C++等。很多腳本語言也支持面向對象的語法比如PHP、Python。

什麼是面向對象呢?它是一種現實對象的建模方法,通過對象這種數據結構來映射現實世界的物質、關係等等,在JAVA編程思想中有一句話總結萬物皆對象。比如我們看到的人、動物、植物等等,包括了這個東西的靜態本質的東西就是屬性,比如人有眼睛、鼻子、耳朵、腿,還包括了對象的動態行為包括人可以走、跑、跳、吃、喝、拉、撒、睡稱之為方法。所以對象這個東西就可以理解為一種特殊的數據結構,這個結構包括了要描述對象的靜態屬性和動態行為:Object{properties,actions}。人是一種通用描述,因為現實中每個人都有不同,所以我們把人這個對象描述為‘人類’。所以大家看到了,類是一組對象的共同抽象,這裡就設計到了面向對象程序設計的第一特徵:抽象。在C語言編程的時候是沒有類這一層抽象的,主要圍繞某個功能來實現,而功能對應某個算法的步驟或流程所以稱之為面向過程的編程。

有了類的概念我們如何映射到某一個具體的人呢,於是就有了面向對象的第二個重要的概念:繼承和多態。故名思議,繼承就是傳承的意思,比如古話雲龍生龍、鳳生鳳,老鼠生來會打洞說的就是這個意思,直接從字面上理解就好了,被繼承的類就稱為父類,而繼承的類就稱為子類。能從多個類中繼承,比如獅虎獸,就是同時繼承了獅子和老虎的特徵,這種行為稱為多繼承,只能從一個類中繼承的稱為單繼承。比如C++就支持多繼承語法,而JAVA只支持單繼承。多態是指一個類可以有多個類型的子類,比如水果包括了蘋果、梨、香蕉、草莓等等,他們都具有水果的基本屬性同時又各有不同。多態描述了世界的多樣性,抽象表達了世界的統一性。

面向對象最後一個特徵就是封裝,封裝的思想就是保密的意思,類中不希望別人看到的屬性和方法我就可以用封裝的概念保護起來,封裝包括了:可以公開訪問、包和子類可訪問、私有三個層次。

在沒有面向對象編程語言之前,程序設計主要通過變量、函數和文件來實現,軟件複用的層次主要在函數、文件層面,缺乏更大粒度的複用單元。有了面嚮對象語言以後,軟件描述能力更接近真實世界,複用的層次上升到了類、包,他們既包含靜態結構又包含動態方法的層次,使得功能和架構級的複用成為可能。


面向對象及其核心的概念:抽象、繼承與多態、封裝


分享到:


相關文章: