對面向對象的理解

 

一、什麼是面嚮對象語言面試

面向對象語言(Object-Oriented Language)是一類以對象做爲基本程序結構單位的程序設計語言,指用於描述的設計是以對象爲核心,而對象是程序運行時刻的基本成分。編程

面嚮對象語言不少,如一直高居世界編程語言排行榜的Java、C#、C++、Object-C、PHP等等。編程語言

二、面向對象的理解函數

相信不少程序猿,特別是新手,都對面向對象都沒有去理解過,但都用過並且可能用的還很熟。學習

最近面試一位剛入行不久的新手,也有半年多的工做經驗了,也作過項目,其實也算不上新手,問其面嚮對象語言的三個基本特徵之一,其回答居然是「開源」,真是讓我大吃一驚。編碼

或許懶、或許感受這些抽象的文字難以學習理解、或許認爲工做中用不到,但我想這些最基本知識的仍是要知道的,不要工做3年,積累下的經驗可能3天都不到。spa

如下是我的對面向對象的理解:設計

什麼是對象? 引用個人一位大學老師的說:一切都是類、一切都是對象3d

如今大部分的面嚮對象語言是基於類的。對象

他的算是啓蒙老師吧,很風趣的一位老師,在學校代課教咱們時,最常常掛在嘴邊的就是這句話(只要他的課這句話最少要聽到10次以上)。以致於如今想到他,腦海裏第一反應就是這句話。

除了紅字以上是個人廢話,能夠忽略。

2.一、對象

一切都是對象

舉例:

將一棟房子 比做一個對象 【房子:對象】。 從圖上也能夠看到這是一種別的房子【房子:類-Class】  如圖

這尼瑪就是對象,那對象應該包含什麼呢,相信只要學過,面向對象的確定都知道面向對象的三項基本特徵:封裝、繼承、多態。

2.二、對象的基本特徵一:封裝

封裝  將各個獨立功能設計成一個個獨立的單元,造成一個有規劃設計的總體,減少耦合,提升內聚,避免牽一髮而動全身,方便對程序的修改。

仍是用房子來解釋,上面已經有房子的基本類型了,大概樣子就是那個熊樣。

舉例:

房子空間很大,可是若是男男女女有十幾人住,並且就一間屋子的話,很不方便,若是吃喝拉撒一個屋,那就成難民營,更況且晚上燈一黑,馬上就亂套了,你懂得。

這樣,就要想法解決:

工人們出動了,把房子折騰折騰給分紅樓上樓下兩層,並說明了,一樓吃喝玩樂、二樓休息; 樓上樓下工人們又分別給隔離出幾個房間,就把房子這樣改造好了,而後男男女女們過來了,你們就能夠各自的房間,作愛作的事,並且不會影響到其餘了。

這樣一個簡單的封裝就完成 【房子:類-class】是對 【房子兩層:部分類-partialclass】的封裝  ;【房子兩層:部分類-partialclass是對【房間:函數/方法-function】的封裝。

2.三、對象的基本特徵二:繼承

 

繼承 發生在兩個對象之間,繼承對象能夠肆意的使用被繼承對象的一些屬性、方法&函數等;使代碼重用,減小編碼量,間接減小維護成本。
仍然是房子。
工人們已經給分好樓、作好房間了。這時有我的以爲房子應該有個緊急避難所。好嗎,尼瑪房子都折騰的差很少了,尼瑪告訴工人要緊急避難所,工人說這很差搞哇。能夠這人有錢,任性,
發話了,要搞必須搞,很差搞也要搞,並且狠狠的搞。工人們就爲難了,難道再去給蓋一棟有避難所的房子?你們集思廣益最終,房子其餘都還用着,再給挖個地下室。因而新房子誕生了。
一個簡單的繼承就出現了 【房子:基類-baseclass】被【新房子:擴展類-ExtensionClass】繼承。

2.四、對象的基本特徵三:多態
多態 不一樣的場合作出不一樣相應,有着不一樣的特色,能夠說是封裝的一個實現。
房子已經成型,要對房間進行裝修了,工人想法很簡單都按照一種樣式來,簡單方便快捷。可是住房的男男女女們有意見,這就是尼瑪客戶,各類千奇百怪的想法,有要在承重牆
上開扇窗戶的,有要在衛生間裝攝像頭的、要在廚房裏裝空調。工人們對能實現就開始開工了,對房子的窗戶、地板、牆、樓梯等進行裝修。這樣裝修完房子內部就豐富起來了。
如圖
「一種多態的展示」就出來了:
【房子:類-class】 經過 【窗戶、地板、牆、樓梯等:屬性-Property】體現多態



2.五、面向對象

最後的總結,前面實際上是對象的說明。如今來講一下面向對象,像開篇提到的一切都是對象。那面向對象有是怎麼回事呢難道說是面向一切,真這麼理解也不爲過。

面向對象是一種對現實世界理解和抽象的方法,對作程序來講,就是讓程序人員,用一種思惟更好的看待萬物,在編程中的本質。 OO

相關文章
相關標籤/搜索