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