OOP基础知识
| 1 面向過(guò)程&面向?qū)ο?br /> |
??? 1、專(zhuān)注于解決一個(gè)問(wèn)題的過(guò)程。面向過(guò)程的最大特點(diǎn),是由一個(gè)一個(gè)的函數(shù)去解決處理這個(gè)問(wèn)題的一系列過(guò)程。
?? ?2、專(zhuān)注于由那個(gè)對(duì)象來(lái)處理一個(gè)問(wèn)題。面向?qū)ο蟮淖畲筇攸c(diǎn),是有一個(gè)個(gè)具有屬性和功能的類(lèi),從類(lèi)中拿到對(duì)象,進(jìn)而處理問(wèn)題。
| 2 面向?qū)ο?br /> |
1、什么是類(lèi)?
????? 具有相同屬性(特征)和方法(行為)的一系列個(gè)體的集合,類(lèi)是一個(gè)抽象的概念
?2、什么事對(duì)象?
????? 從類(lèi)中,拿到的具有具體屬性值的個(gè)體,稱(chēng)為對(duì)象。對(duì)象是一個(gè)具體的個(gè)體
? 3、類(lèi)與對(duì)象的關(guān)系?
???? ? 類(lèi)是對(duì)象的抽象化!對(duì)象是類(lèi)的具體化!
? ???? 類(lèi)僅僅表明這類(lèi)對(duì)象有哪些屬性,但是不能具有具體的值,所以類(lèi)是抽象的
?????? 而對(duì)象,是將類(lèi)的所有屬性賦值后,產(chǎn)生的具體個(gè)體,所有對(duì)象是具體的
| 3 類(lèi)的聲明與實(shí)例化 |
1、如何聲明一個(gè)類(lèi):
?? ??? class 類(lèi)名{
?? ??????? 訪(fǎng)問(wèn)修飾符 $屬性[=默認(rèn)值];
?? ??????? [訪(fǎng)問(wèn)修飾符 ]function 方法(){}
?? ??? }
?? 2、聲明一個(gè)類(lèi)的注意事項(xiàng):
?? ??? ①類(lèi)名之內(nèi)有數(shù)字字母下劃線(xiàn)組成,開(kāi)頭不能使數(shù)字,必須符合大駝峰法則
?? ??? ②類(lèi)名必須使用class修飾,類(lèi)名后面一定不能有();
?? ??? ③屬性必須要帶訪(fǎng)問(wèn)修飾符,方法可以不帶訪(fǎng)問(wèn)修飾符;
?? 3、實(shí)例化對(duì)象及對(duì)象屬性方法的調(diào)用?
?????? $對(duì)象名 = new 類(lèi)名(); //()可以不加
?? ?
?????? 類(lèi)外部調(diào)用屬性和方法
?????? $對(duì)象名 -> 屬性名; //使用->調(diào)用屬性時(shí),屬性名不能帶$
?? ?
?????? 類(lèi)內(nèi)部調(diào)用屬性和方法
?????? $this -> 屬性名;
| 4 構(gòu)造函數(shù) |
1、什么是構(gòu)造函數(shù)?
? ???? 構(gòu)造函數(shù)是類(lèi)中的一個(gè)特殊函數(shù),當(dāng)我們使用new關(guān)鍵字實(shí)例化對(duì)象時(shí),相當(dāng)于調(diào)用了類(lèi)的構(gòu)造函數(shù);
?? 2、構(gòu)造函數(shù)有什么作用?
? ???? 實(shí)例化對(duì)象時(shí),自動(dòng)調(diào)用,用于給對(duì)象的屬性賦初值!
?? 3、構(gòu)造函數(shù)的寫(xiě)法?
? ???? ①構(gòu)造函數(shù)名,必須與類(lèi)同名
? ???? [public ]function Person($name){
? ??? ???? $this -> name = $name;
? ???? }
? ???? ②使用魔術(shù)方法__construct
? ???? [public ]function __construct($name){
? ??? ???? $this -> name = $name;
? ???? }
?? 4、構(gòu)造函數(shù)注意事項(xiàng):
? ???? ①第一種寫(xiě)法,構(gòu)造函數(shù)名必須與類(lèi)同名!!!
? ???? ②如果一個(gè)類(lèi)沒(méi)有手寫(xiě)構(gòu)造函數(shù),則系統(tǒng)默認(rèn)會(huì)有一個(gè)空參數(shù)構(gòu)造,因此可以使用new Person();
? ??? ??? 如果我們寫(xiě)了帶參數(shù)的構(gòu)造函數(shù),則將不會(huì)再有空參構(gòu)造,也就是不能直接使用new Person(); Person后面的()中的參數(shù)列表,必須符合
?? 構(gòu)造函數(shù)的要求!!
? ???? ③如果兩種結(jié)構(gòu)函數(shù)同時(shí)存在,將使用__construct。
?? 5、析構(gòu)函數(shù):__destruct():
? ???? ①析構(gòu)函數(shù)在對(duì)象被銷(xiāo)毀釋放之前自動(dòng)調(diào)用!
? ???? ②析構(gòu)函數(shù)不能帶有參數(shù)
? ???? ③析構(gòu)函數(shù)常用于對(duì)象使用完以后,釋放資源、關(guān)閉資源等
?? 6、魔術(shù)方法:
? ???? PHP中,給我們提供了一系列的__開(kāi)頭的函數(shù),這些函數(shù)無(wú)需自己手動(dòng)調(diào)用,會(huì)在合適的時(shí)機(jī)自動(dòng)調(diào)用,這類(lèi)函數(shù)稱(chēng)為魔術(shù)函數(shù)。
? ???? 例如:function __construct(){} 在類(lèi)new一個(gè)對(duì)象時(shí)自動(dòng)使用
? ??? ? ? ? ? ? ? function __destruct(){} 在對(duì)象被銷(xiāo)毀時(shí)自動(dòng)調(diào)用
?????
?????? 我們要求除了魔術(shù)方法外,自定義的函數(shù)與方法不能使用__開(kāi)頭
?? ??? ?
?? ?最后,一般對(duì)于功能比較復(fù)雜的類(lèi),我們會(huì)單獨(dú)的寫(xiě)到一個(gè)類(lèi)的文件中。
?? ?類(lèi)文件的命名,統(tǒng)一小寫(xiě),使用“類(lèi)名(小寫(xiě)).class.php”的方式命名。
?? ?在其他文件中使用這個(gè)類(lèi) 時(shí),可以用include導(dǎo)入這個(gè).class.php文件。
???
轉(zhuǎn)載于:https://www.cnblogs.com/c-hl/p/7192656.html
總結(jié)
- 上一篇: python--迭代器的实现
- 下一篇: 我的webpack学习笔记(二)