新聞中心

專(zhuān)注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)湘橋免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
面向?qū)ο笾饕譃槿齻€(gè)部分,如下所示:
- 面向?qū)ο蠓治觯∣bject Oriented Analysis,OOA);
- 面向?qū)ο笤O(shè)計(jì)(Object Oriented Design,OOD);
- 面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP)。
本節(jié)我們主要介紹的是面向?qū)ο缶幊獭?br />
什么是面向?qū)ο缶幊?/h2>
面向?qū)ο缶幊蹋∣bject-Oriented Programming,OOP)是一種編程思想,起源于 20 世紀(jì) 60 年代,直到 20 世紀(jì) 90 年代才成為應(yīng)用軟件開(kāi)發(fā)的主流,并且逐漸從應(yīng)用軟件領(lǐng)域過(guò)渡到了 Web 領(lǐng)域。
在很多現(xiàn)代計(jì)算機(jī)語(yǔ)言中都有面向?qū)ο缶幊痰母拍?,在不同的?jì)算機(jī)語(yǔ)言中,這一思想所表現(xiàn)的內(nèi)容豐富程度是不完全相同的,例如,Java 語(yǔ)言從一開(kāi)始就設(shè)計(jì)成面向?qū)ο蟮木幊陶Z(yǔ)言,可以說(shuō)面向?qū)ο缶褪瞧浔举|(zhì)內(nèi)涵。
面向?qū)ο缶褪菍⒁幚淼膯?wèn)題抽象為對(duì)象,然后通過(guò)對(duì)象的屬性和行為來(lái)解決對(duì)象的實(shí)際問(wèn)題。面向?qū)ο笾袃蓚€(gè)重要的基本概念就是類(lèi)和對(duì)象,接下來(lái)分別介紹一下。
1) 類(lèi)
世間萬(wàn)物都具有其自身的屬性和方法,通過(guò)這些屬性和方法可以將不同事物區(qū)分開(kāi)來(lái)。例如,人具有身高、體重和膚色等屬性,還可以進(jìn)行吃飯、學(xué)習(xí)、走路等活動(dòng),這些活動(dòng)可以說(shuō)是人具有的功能??梢园讶丝醋鞒绦蛑械囊粋€(gè)類(lèi),那么人的身高可以看作類(lèi)中的屬性,走路可以看作類(lèi)中的方法。
也就是說(shuō),類(lèi)是屬性和方法的集合,是面向?qū)ο缶幊谭绞降暮诵暮突A(chǔ),通過(guò)類(lèi)可以將零散的用于實(shí)現(xiàn)某項(xiàng)功能的代碼進(jìn)行有效管理。例如,創(chuàng)建一個(gè)運(yùn)動(dòng)類(lèi),其中包括 5 個(gè)屬性;姓名、身高、體重、年齡和性別,定義 4 個(gè)方法:踢足球、打籃球、舉重和跳高。
總而言之,類(lèi)是變量(類(lèi)的屬性)與作用于這些變量的函數(shù)(類(lèi)的方法)的集合,屬性與方法是構(gòu)成類(lèi)的基礎(chǔ)。
2) 對(duì)象
類(lèi)是具備某項(xiàng)功能的抽象模型,實(shí)際應(yīng)用中還需要對(duì)類(lèi)進(jìn)行實(shí)例化,這樣就引入了對(duì)象的概念。
對(duì)象是類(lèi)進(jìn)行實(shí)例化后的產(chǎn)物,是一個(gè)實(shí)體。仍然以人為例,“黃種人是人”這句話(huà)沒(méi)有錯(cuò)誤,但反過(guò)來(lái)說(shuō)“人是黃種人”,這句話(huà)一定是錯(cuò)誤的。因?yàn)槌它S種人,還有黑人、白人等。那么“黃種人”就是“人”這個(gè)類(lèi)的一個(gè)實(shí)例對(duì)象。
可以這樣理解對(duì)象和類(lèi)的關(guān)系:類(lèi)是對(duì)象的抽象,在類(lèi)中可以定義對(duì)象的屬性和方法;對(duì)象是類(lèi)的實(shí)例,類(lèi)只有被實(shí)例化后才能使用。
面向?qū)ο缶幊痰奶匦?/h2>
面向?qū)ο缶幊叹哂蟹庋b、繼承、多態(tài)三大特性,它們迎合了編程中注重代碼重用性、靈活性和可擴(kuò)展性的需要,奠定了面向?qū)ο笤诰幊讨械牡匚弧?br />
1) 封裝
封裝就是將一個(gè)類(lèi)的使用和實(shí)現(xiàn)分開(kāi),只保留有限的接口(方法)與外部聯(lián)系。對(duì)于用到該類(lèi)的開(kāi)發(fā)人員,只要知道這個(gè)類(lèi)該如何使用即可,而不用去關(guān)心這個(gè)類(lèi)是如何實(shí)現(xiàn)的。這樣做可以讓開(kāi)發(fā)人員更好地把精力集中起來(lái)專(zhuān)注于別的事情,同時(shí)也避免了程序之間的相互依賴(lài)而帶來(lái)的不便。
例如,在使用計(jì)算機(jī)時(shí),我們并不需要將計(jì)算機(jī)拆開(kāi)了解它每個(gè)部件的具體用處,只需要按下電源鍵就能將計(jì)算機(jī)啟動(dòng),這就體現(xiàn)了封裝的好處。
2) 繼承
繼承就是派生類(lèi)(子類(lèi))自動(dòng)繼承一個(gè)或多個(gè)基類(lèi)(父類(lèi))中的屬性與方法,并可以重寫(xiě)或添加新的屬性或方法。繼承這個(gè)特性簡(jiǎn)化了對(duì)象和類(lèi)的創(chuàng)建,增加了代碼的重用性。
例如,已經(jīng)定義了 A 類(lèi),接下來(lái)準(zhǔn)備定義 B 類(lèi),而 B 類(lèi)中有很多屬性和方法與 A 類(lèi)相同,那么就可以用 B 類(lèi)繼承 A 類(lèi),這樣就不用再在 B 類(lèi)中定義 A 類(lèi)中已有的屬性和方法,從而可以在很大程度上提高程序的開(kāi)發(fā)效率。
繼承分為單繼承和多繼承,PHP 目前只支持單繼承,也就是說(shuō)一個(gè)子類(lèi)有且只有一個(gè)父類(lèi)。
3) 多態(tài)
對(duì)象的狀態(tài)是多變的。一個(gè)對(duì)象相對(duì)于同一個(gè)類(lèi)的另一個(gè)對(duì)象來(lái)說(shuō),它們擁有的屬性和方法雖然相同,但卻可以有著不同的狀態(tài)。另外,一個(gè)類(lèi)可以派生出若干個(gè)子類(lèi),這些子類(lèi)在保留了父對(duì)象的某些屬性和方法的同時(shí),也可以定義一些新的方法和屬性,甚至于完全改寫(xiě)父類(lèi)中的某些已有的方法。多態(tài)增強(qiáng)了軟件的靈活性和重用性。
當(dāng)前名稱(chēng):PHP面向?qū)ο蠛?jiǎn)介
本文地址:http://m.fisionsoft.com.cn/article/djdiccp.html


咨詢(xún)
建站咨詢(xún)
