php-物件導向

來源:互聯網
上載者:User

標籤:規律   靜態成員   方法重載   集合   匯入   提高   共用   執行個體   架構   

1、 物件導向:一種電腦編程的架構。把每個獨立的功能模組抽象成類,形成對象,由多個對象組成這個系統,這些對象之間都能夠接收資訊、處理資料和向其它對象發送資訊等等相互作用
特點:重用性、靈活性、擴充性;
物件導向符合人類看待事物的一般規律,採用物件導向方法可以使系統各部分各司其職、各盡所能。

2、類:類是具有相同屬性(特徵)和相同方法(行為)的一組對象的集合。

3、對象:用來描述客觀事物的一個實體,它是構成系統的基本單位。
對象是一個由屬性和有權對這些屬性進行操作的封裝體。

4、類和對象的關係:類的執行個體化就是對象,而對一類對象的抽象就是類。

5、類的執行個體化(即建立對象):通過關鍵字new來執行個體化。格式: 對象名字=new 類名{屬性;方法}

6、訪問對象的成員(屬性和方法):外部存取,通過操作符:->(對象->成員)
內部訪問,對象的方法通過$this訪問本對象的成員屬性或其他成員方法,即$this代表這個對象

7、構造方法:當建立一個對象的時候自動調用構造方法。
構造方法的聲明和其他方法一樣,只是它的方法名必須是__construct,這是php5的變化;以前的版本中構造方法的名字必須和類名一樣。而使用前者的好處是,構造方法獨立於類名,即當類名需要改變的時候,構造方法的名字不用跟著改變。
注意:一個類中只能有一個構造方法,不能主動調用,通常用來執行一些有用的初始化任務,如在建立對象的時候給成員屬性賦初始值。

8、析構方法:允許在一個類被銷毀前執行一些的操作或功能。
析構方法名稱必須是__destruct,不能帶參數。

9、封裝性:
1.把對象的全部屬性和全部服務結合在一起,形成一個不可分割的獨立單位;
2.資訊隱蔽,即儘可能隱藏對象的內部細節。
3.使用關鍵字private來對屬性和方法進行封裝。
注意:私人成員不能被外部存取,只能通過內部訪問。
給類建立介面,可以為私人屬性在外部提供設定和擷取方法來操作私人屬性。
10、類的繼承extnds:
子類可以自動共用父類的資料和方法。單繼承。提高了代碼的重用性

11、重載新的方法:
PHP裡面沒有方法重載。不能重載也就是在你的項目中不能定義相同方法名的方法。
重載新的方法就是子類覆蓋父類的已有的方法,我們需要在父類的基礎上擴充就需要重載。
雖然說在PHP裡面不能定義同名的方法,但是在父子關係的兩個類中,我們可以在子類中定義和父類同名的方法,這樣就把父類中繼承過來的方法覆蓋掉了。
一種是使用父類的“類名::”來調用父類中被覆蓋的方法;一種是使用“parent::”的方試來調用父類中被覆蓋的方法;

12、訪問類型:對類成員的訪問進行限制。public,private,protected
public,共有的,沒有訪問限制
private:私人的,內部可以訪問,外部和子類不能訪問
protected:保護的,內部和子類可以訪問,外部不能訪問

13、final,這個關鍵字只能定義類和方法,不能定義屬性,因為final是常量的意思。使用final關鍵標記的類不能被繼承,使用final關鍵標記的方法不能被子類覆蓋,因為是最終版本。

14、static:
在類中描述的成員屬性和成員方法是靜態
static成員能夠限制外部的訪問,因為static的成員是屬於類的,是不屬於任何對象執行個體,是在類第一次被載入的時候分配的空間,其他類是無法訪問的,只對類的執行個體共用,能一定程度對類該成員形成保護。
在類的外部不需要對象而使用類名就可以訪問的到靜態成員。
類裡面的靜態方法只能訪問類的靜態屬性,在類裡面的靜態方法是不能訪問類的非靜態成員的,原因很簡單,我們要想在本類的方法中訪問本類的其它成員,我們需要使用$this這個引用,而$this這個引用指標是代表調用此方法的對象,我們說了靜態方法是不用對象調用的,而是使用類名來訪問,所以根本就沒有對象存在,也就沒有$this這個引用了,沒有了$this這個引用就不能訪問類裡面的非靜態成員,又因為類裡面的靜態成員是可以不用對象來訪問的,所以類裡面的靜態方法只能訪問類的靜態屬性,既然$this不存在,在靜態方法中訪其它靜態成員我們使用的是一個特殊的類“self”;self和$this相似,只不過self是代表這個靜態方法所在的類。所以在靜態方法裡,可以使用這個方法所在的類的“類名”,也可以使用“self”來訪問其它靜態成員,如果沒有特殊情況的話,我們通常使用後者,即“self::成員屬性”的方式。
在非靜態方法裡可不可以訪問靜態成員呢,當然也是可以的了,但是也不能使用“$this”引用也要使用類名或是“self::成員屬性的形式”。

15、const是一個定義常量的關鍵字,用“const”修飾的成員屬性的訪問方式和“static”修飾的成員訪問的方式差不多

16、抽象方法和抽象類別
沒有方法體的方法就是抽象方法,抽象方法就是為了方便繼承而引入的.

在方法聲明的時候沒有大括弧以及其中的內容,而是直接在聲明時在方法名後加上分號結束,另外在聲明抽象方法時還要加一個關鍵字“abstract”來修飾。

只要一個類裡面有一個方法是抽象方法,那麼這個類就要定義為抽象類別
抽象類別也要使用“abstract”關鍵字來修飾;
在抽象類別裡面可以有不是抽象的方法和成員屬性,但只要有一個方法是抽象的方法,這個類就必須聲明為抽象類別,使用“abstract”來修飾。

最重要的一點就是抽象類別不能產生執行個體對象,所以也不能直接使用。

將抽象方法是作為子類重載的模板使用的,定義抽象類別就相當於定義了一種規範,這種規範要求子類去遵守,子類繼承抽象類別之後,把抽象類別裡面的抽象方法按照子類的需要實現。
子類必須把父類中的抽象方法全部都實現,否則子類中還存在抽象方法,那麼子類還是抽象類別,還是不能執行個體化對。

17、https://wenku.baidu.com/view/18b06794dd88d0d233d46a5e.html

18、介面:
介面是一種特殊的抽象類別,它裡面所有的方法都是抽象方法,介面裡面不能聲明變數,可以用const聲明常量,所有成員的許可權都是public,關鍵字是interface.
解決php不能多繼承的問題。
因為介面是一種特殊的抽象類別,裡面所有的方法都是抽象方法,所以介面也不能產生執行個體對象;它也作為一種規範,所有抽象方法需要子類去實現。 我們可以使用“extends”關鍵字讓一個介面去繼承另一個介面。
我們定義一個介面的子類去實現介面中全部抽象方法使用的關鍵字是“implements”,而不是我們前面所說的“extends”。

PHP是單繼承的,一個類只能有一父類,但是一個類可以實現多個介面,就相當於一個類要遵守多個規範,就像我們不僅要遵守國家的法律,如果是在學校的話,還要遵守學校的校規一樣。
//使用implements實現多個介面 class Four implemtns介面一,介面二,….{ //必須把所有介面中的方法都要實現才可以執行個體化對象。}

PHP中不僅一個類可以實現多個介面,也可以在繼承一個類的同時實現多個介面,一定要先繼承類再去實現介面。
//使用extends繼承一個類,使用implements實現多個介面class Four extends類名一implemtns介面一,介面二,….{ //所有介面中的方法都要實現才可以執行個體化對象………..}

19、多態
多態就是把子類對象賦值給父類引用,然後調用父類的方法,去執行子類覆蓋父類的那個方法,但在PHP裡是弱類型的,對象引用都是一樣的不分父類引用,還是子類引用。

20、自動載入類__autoload
在用到什麼類的時候,再把這個類所在的PHP檔案匯入

php-物件導向

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.