1、類:class,是定義物件導向主體的最外層結構,用來包裹主體的資料和功能(函式)。類是一類具有共性事務的代表,代表的是事務的共性。
2、物件:object,是對某類事務的具體代表,也是實際資料和功能操作的具體單位,也被稱為例項(instance)。
3、例項化:new,從乙個抽象的概念(類)得到乙個符合抽象概念的具體例項(物件)的程序。
4、類成員:member,指類class結構中的所有內容,類成員裡有三種
1)方法:method,本質是在類class結構中建立的函式,也稱為成員方法或者成員函式
2)屬性:property,本質是在類class結構中建立的變數,也稱之為成員變數
3)類常量:constant,本質是在類class結構中建立的常量
1、定義類基本語法:class類名{}
2、類class是一種結構,如果寫好沒有語法錯誤的情況下,**不會執行(與函式定義一樣),也無法列印輸出
3、類的命名規範:類的命名規範與函式類似,區別在於認為的通常會將類名的首字母大寫
4、如果碰到多單詞組成的類名,通常使用駝峰法(大寫單詞的首字母)
5、類無法直接訪問,需要得到類的具體物件才能訪問,可以通過例項化new來實現物件的建立:new類名【()】(小括號可有可無)
6、物件建立後可以使用或者列印,但是為了方便使用,使用變數儲存例項化物件。
定義:類成員,指直接定義在類結構{}內部的一級成員,即直接依賴{}的成員。
1、成員變數:就是在類結構{}下直接定義的變數,但是定義的方式與普通變數稍微有點不同,需要在變數名字前使用乙個關鍵字public,定義語法:public變數名字【=值】;,成員變數可以賦值也可以不賦值。
2、成員變數訪問:成員變數必須通過物件才能進行訪問,也就是需要先通過例項化的到物件,然後通過物件實現對成員變數的訪問:訪問語法:$物件名->屬性名;
注意:刪除屬性和新增屬性通常使用較少,更多的屬性操作是訪問和修改
3、成員方法:就是在類結構{}下定義的函式,函式內部的內容與原來函式結構一樣,可以有分支、迴圈結構等
5、類常量:類常量是在類結構{}下定義的常量,類常量的定義只能使用一種方式:const 常量名=值;
注意:類常量不是由物件來進行訪問,所有暫時不做訪問講解,到後面知識再將。
定義:訪問修飾限定符是一種用在屬性或者方法前的修飾關鍵字,是用來控制屬性或者方法的訪問位置的。
1、首先需要明白一組概念類的內部和外部
1)類內部:是指類定義的內部,即類名後{}內部
2)類外部:是指類定義的外部內容,即類名後{}之外的所有地方
3)類成員的訪問許可權控制是內部訪問(私有)、鏈內部訪問(受保護)和全部訪問(公有)
2、public:公有,即表示所修飾的內容(屬性或者方法)可以在當前類的內部訪問,也可以在類的外部訪問
3、protected:受保護:表示所修飾的內容只能在類內部訪問(在學習繼承時再講)
4、private:私有,表示所修飾內容只能在當前類內部訪問
5、訪問修飾限定符不只是限定屬性,也可用來限定方法
方法沒有修飾限定符預設public。
定義:類成員屬性和方法的訪問必須通過物件才能訪問,類外部可以通過例項化得到類物件從而實現成員訪問,但是類內部又不能訪問類外部的物件(未知),此時類內部就內建乙個物件$this代表來訪問物件。
1、嘗試在類內部方法中訪問屬性
注意:方法本質是定義在類內部的函式,因此受制於作用域的問題,在方法內部訪問的變數系統認定為區域性變數(必須內部定義或者引數傳入),否則就會提示未定義
2、類內部訪問類成員,需要通過物件來進行訪問
3、通過$this訪問
4、由上述**可見:$this代表的是物件,而$this所在環境為類內部的方法內部,所以$this物件是在類內部訪問,因此可以訪問所有的屬性和方法,不受訪問修飾限定符限制。
5、$this,class和new之間的關係原理
1)class是定義類結構,屬於非執行段**,因此會被載入到**段(編譯階段)
2)new是例項化物件,先判斷類在記憶體(**段)是否存在
1、類不存在,報錯;
2、類存在,將類內部的屬性部分複製乙份,然後在記憶體(堆區)開闢一塊記憶體空間,將屬性放在屬性放到裡面,同時內部有乙個指標指向類的記憶體空間(**段)
3、物件訪問屬性即訪問的是物件空間裡儲存的部分
4、物件訪問方法是物件通過內部指標找到類空間中的方法,然後在記憶體(棧區)開闢執行
3)$this是系統在方法內建的物件通用名字
1、物件在呼叫方法的時候,系統會自動找到物件所儲存的記憶體位址(堆區),然後把位址賦值給\$this
2、方法內部的\$this就代表呼叫當前\$this所在方法的外部物件
3、\$this的本質是函式內部的乙個區域性變數,只是系統自動對其進行賦值,而且一定是呼叫方法的物件本身
定義:物件導向規範是指我們在開發時,在技術沒有強制規定的情況下,應該採用什麼樣的方式來協助我們進行**的書寫。
1、屬性的初始化:屬性是類對於同類事務所抽離出來的共性資料,本身在類結構中沒有價值,是當具體物件產生之後,屬於物件本身的。因此在進行類中定義屬性的時候,通常不會對屬性進行初始化,除非屬性本身的值也具有共性。
2、屬性的初始化:屬性在類中初始化的基本判定就是資料是否初始化的時候統一,如果資料統一(即初始化),那麼所有物件在生成之後,就擁有對應的值;如果不初始化,意味著所有物件在生成後,應該對屬性進行賦值。
3、訪問修飾限定符選擇:訪問修飾限定符是用來限制類成員被物件訪問時物件所處位置的。訪問的許可權從public、protected、private依次變小。使用規則如下:
1)設定好的類成員本身不會被外部用到,那麼應該使用private或者protected
2)設定好的類成員一定會給外部訪問,使用public
3)屬性通常private居多,如果需要外部訪問屬性,通常會定義相關方法來實現屬性的檢視和修改,因此可以在方法內對資料邏輯進行**控制,安全
4)總之一句話:盡可能增加類對成員的控制(盡可能多使用private,少使用public)
PHP物件導向基礎
1 constract 建構函式知識點 a 例項化物件的時候,如果子類沒有建構函式,就呼叫父類的建構函式。如果子類有建構函式,這首先呼叫自己。b 呼叫父類的建構函式 parent constract 2 php不支援多重繼承,因為多重繼承容易產生二義性。但如果讓c b a,就可以實現多重繼承的功能。...
php基礎 物件導向
物件導向的申明方式 物件class one b newone b aa 建構函式建構函式 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。php 5 允行開發者在乙個類中定義乙個方法作為建構函式,語法格式如下 class sit...
php基礎 物件導向
物件導向和面向過程的區別 優缺點 類 具有相同特性和行為的物件的抽象就是類。因此,物件的抽象是類,類的具體化就是物件,也可以說類的例項是物件,類實際上就是一種資料型別。在物件導向的程式語言中,類 是乙個獨立的程式單位,它應該有乙個類名幷包括 屬性 說明和 方法 說明兩個主要部分。類的成員 類的成員主...