首頁 >php教程 >php手册 >PHP中面相物件物件的知識點整理

PHP中面相物件物件的知識點整理

WBOY
WBOY原創
2016-09-11 11:19:39914瀏覽

面向對象

萬物皆對象,將構成問題的事務分解到各個對像上,建立對象的目的不是為了完成一個工作,而是為了描述某個事務在解決問題中的行為,更符合人的思維習慣,代碼重用性高,可擴充性.
__________________________________________________________________

類的概念

是一種抽象的概念,是具有相同語意定義物件的集合(具有相同屬性和方法的集體),使用具體的類別是不可行的,只能實例化。拿汽車舉例,汽車的設計圖就是類,汽車是物件。設計中重點是類別的創建
 
現實生活中類的概念
萬物皆為對像如我們使用的具體電腦就是對象,那電腦就是一個類別。你去幼稚園接孩子,你說接孩子,人家一定不給你(除非認識你和知道你的孩子是誰),你要說出你孩子的名子,你的孩子就是具體的對象,孩子就是一個類
 
類名書寫規範
     類別名首字母大寫一個類別定義在一個檔案中,並以.class.php做為檔案名稱結尾
 
__________________________________________________________________
  對象
對象句柄
用於區分不同物件。物件建立後,在記憶體中取得一塊儲存空間,儲存空間的位址就是物件的識別或句柄
 
屬性
在類別中定義的變量,即為成員屬性,用於描述物件靜態特性的資料。如人的姓名,性別,首字母小寫
 
方法
函數定義在類別中即為成員方法,用於描述物件動態特性的操作行為,方法名稱不區分大小寫,不可重名,首字母小寫
物件的生命週期
創建後,生命週期開始,當程式結束後或程式設計師清除物件後即銷毀,PHP會自動銷毀物件
 

物件的生命週期

1 程式執行完成後,PHP運行回收機制,刪除記憶體的物件
2 刪除所有
物件的引用後,物件即為垃圾,回收機制自動刪除垃圾
 

 對象產生的步驟

1 在內容中開啟出物件的空間
 
2 執行構造方法
 
3 將物件的引用位址回傳

物件的記憶體分佈:

1 物件引用被放到了「棧記憶體」裡(棧存放固定內容)
 
2 物件是放在「堆記憶體」裡(堆存放可變內容)
 
3 而靜態成員則放到了“數據區”,在第一次被加載的時候放入的,可以讓堆內存裡面的每個對象所共享
 
4 函數和方法放在程式碼區

 
 

面向對象的特性

抽象性
把一類物件的共同屬性和方法抽象化出來,形成類,這種思考方式為抽象
 
封裝性:
把成員方法和成員屬性封裝到類別中,隱藏屬性和方法,隱藏方法實現的細節,透過public protected private final static  限定類別成員的存取權限,資料被保護在內部,只有透過授權的成員方法才可以操作。盡可能的對成員進行封裝
 
繼承extends:
可以使一個類別繼承並擁有另一個已經存在類別的成員屬性和方法,被繼承的類別稱為父類別或基底類別,繼承類別為子類別。 extends 關鍵字 實作繼承關係
 
多態:
子類別繼承父類,透過對父類別方法重寫實作多態
__________________________________________________________________________________________

訪問修飾符(作用域描述符)

 
publlic 公有
在類別的內部與外部或子類別都可以訪問,是最開放的權限
private 私有的
定義類別的屬性和方法,在類別的內部可以訪問,在類別的外部或子類別都不可以存取
protected 受保護的
定義類別的屬性和方法,在類別的內部或子類別可以訪問,類別的外部不可以存取
模組設計
強內聚(功能盡量在類別的內部完成),弱耦合(開放盡量少的方法給外部呼叫)。例:公司銷售接項目,具體工作交給公司內部程式設計師,設計人員,伺服器管理人員協同完成
 
__________________________________________________________________________________________
 

static靜態屬性與靜態方法

需要一個資料物件只服務於類別,即類別內部可用,對外不可用時。建物件是極其耗費資源的,因此當一個方法具有比較強的公用性的時候,沒有必要為了調用這個方法而重新再生成該類別的實例。定義的方法或變數在程式第一次載入時即駐留內存,程式結束釋放。
靜態方法不能被非靜態方法重寫,建構方法不允許宣告為static的
static變數:
透過static宣告的成員變數為靜態變數或叫類別變數,是該類別的公共變量,在第一次使用時即生成,對於該類別的所有物件只有一份,是屬於類別的,不是屬於物件的。 static變數是屬於類別而不屬於對象,可以在任何地方通地類別來訪問,是類別的全域變量,類別創建時即存入記憶體。對多個物件來說,靜態資料成員只儲存一處,可以節省記憶體。只要對靜態資料成員的值更新一次,保證所有物件都存取更新後的相同的值。
static方法:
用static宣告的方法為靜態方法或叫類別方法,執行該方法時不會將物件參考傳給函數,所以我們不能存取非靜態成員,只能存取靜態方法或靜態變數。只能使用關於類別的方式如self   static  parent等。使用時不用生成物件即可執行
 
$this     self::    parent::
 
$this    
是目前物件的引用, 一般出現在方法裡,用於取得類別的成員屬性,或執行類別的成員方法
self ::
對本類別的參考 ,用於取得目前類別的表態成員屬性或靜態成員方法self::run()
parent ::
對父類別的引用,呼叫父類別的方法或屬性。
_________________________________________________________________________________

構造法&析構法

構造方法__construct()
在建立物件時自動執行,沒有傳回值,用於執行類別的一些初始化工作,如物件屬性的初始化工作,PHP4中建構方法必須與類別同名,php5中規定建構方法為__construct(),優點是不受類別名稱的影響,如果不存在__construct  php搜尋與類別同名的方法自動執行。
可以在建構方法中傳遞參數,用來定義屬性,在父類別和子類別都定義建構方法時,執行子類別的建構方法
 
析構方法__destruct():
用於物件在記憶體中被銷毀時自動執行的方法,不含任何參數
_________________________________________________________________________________

物件 final const

 
  1. <span class="com">//類別裡面的方法不能修改</span>
  2. <span class="com">//類別不能被繼承</span>
  3. <span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">class<span class="pln"> souji <span class="pun">{</span></span></span></span></span></span>
  4. <span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">public<span class="pln"> $pinpai<span class="pun">;<span class="pln"> <span class="com">//報錯</span></span></span></span></span></span></span> </span>
  5. final <span class="pln">function<span class="kwd"> congdian<span class="pln">()<span class="kwd"> <span class="pln">{<span class="pun"> <span class="pln">//無效<span class="pun"><span class="pln"><span class="com"></span></span></span></span></span></span></span></span></span></span>
  6. <span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="pln"><span class="str"><span class="pun"></span></span></span></span></span></span></span>
  7. <span class="pln"><span class="pun"></span> echo $this</span>->pinpai
  8. .
  9. "手機透過10v電壓充電"<span class="pln">;<span class="kwd"><span class="pln"><span class="kwd"><span class="pln"><span class="pun"><span class="pln"> <span class="pun"></span></span> </span>}</span></span></span></span> </span>
  10. public <span class="pln">function<span class="str"> kaijidonghua<span class="pun">()</span> </span>{</span>
  11. <span class="pln"><span class="pun"></span></span>
  12. <span class="pun"> </span>
  13. echo
  14. ">>>";<span class="pun"> </span> }
  15. <span class="pln"><span class="kwd">}<span class="pln"><span class="kwd"><span class="pln"> <span class="pun"><span class="pln"><span class="pun">class</span> moto </span>extends</span> souji </span>{</span></span></span></span>
  16. <span class="pln"><span class="com"> </span>public</span> function
  17. __construct
  18. () {<span class="pln"><span class="pun"></span></span>
  19. <span class="pln"><span class="pun"></span></span>
  20. <span class="pln"> <span class="kwd"><span class="pln"><span class="kwd"> <span class="pln">// $this->pinpai = "摩托羅拉";<span class="pun"><span class="pln"><span class="pun"></span> </span></span></span> $this</span>-></span>congdian</span>();</span>
  21. <span class="pln"> <span class="str"><span class="pun"></span> </span>}</span>
  22. public <span class="pln">function<span class="pun"> kaijidonghua</span>()</span> {
  23. <span class="pun">🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜 echo 🎜"摩托羅拉商標"🎜;🎜🎜🎜🎜🎜 🎜🎜🎜🎜 🎜🎜🎜 🎜}🎜🎜🎜🎜 🎜🎜🎜}</span>
  24. <span class="pln">$li <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> moto<span class="pun">();</span></span></span></span></span></span>
  25. <span class="pln">$li<span class="pun">-><span class="pln">kaijidonghua<span class="pun">();</span></span></span></span>
  26. <span class="com">//定義常數</span>
  27. <span class="pln">define<span class="pun">(<span class="str">"WEBNAME"<span class="pun">,<span class="pln"> <span class="str">"文豆"<span class="pun">);</span></span></span></span></span></span> </span>
  28. function
  29. aa(){<span class="pln"><span class="pun"></span></span>
  30. echo WEBNAME
  31. ."專注PHPWEB開發"<span class="pln">;<span class="pun"><span class="str"><span class="pun"></span></span></span> </span>
  32. }
  33. <span class="pun"> </span>
  34. aa
  35. ();<span class="pln"><span class="pun"></span> </span>
  36. class
  37. caiwu{<span class="pln"><span class="pun"></span></span>
  38. const suilv<span class="pln">=<span class="kwd">0.05<span class="pln">;<span class="pun"><span class="lit"><span class="pun"></span></span></span></span></span> </span>
  39. function __construct(){<span class="pln"><span class="pun"></span></span>
  40. echo WEBNAME
  41. ;<span class="pln"><span class="pun"></span> </span>
  42. }<span class="pln"><span class="pun"></span> </span>
  43. function kaigonzi($xingming,$gongzi){<span class="pln"><span class="pun"></span></span>){
  44. $gongzi
  45. = $gongzi<span class="pln">-<span class="pun">$gongzi<span class="pln">*<span class="pun">self<span class="pln">::<span class="pun">suilv<span class="kwd"> <span class="pun"><span class="pln"><span class="pun"> </span>return</span> $xingming</span>.</span>"的薪水是:"</span>.</span>$gongzi</span>.</span>"元"</span></span>
  46. <span class="pln"><span class="kwd"><span class="pln"><span class="pun"> <span class="str"><span class="pun"><span class="pln"> <span class="pun">}<span class="str"><span class="pun"></span></span> </span></span></span>}</span></span></span></span></span>
  47. <span class="com">/*員工類別*/</span>
  48. <span class="kwd">class<span class="pln"> yuangong<span class="pun">{</span></span></span>
  49. <span class="pln"> <span class="kwd">private<span class="pln"> $xingming<span class="pun">;<span class="com">//姓名</span></span></span></span></span>
  50. <span class="pln"> <span class="kwd">private<span class="pln"> $gongzisu<span class="pun">;<span class="com">//薪水數</span></span></span></span></span>
  51. <span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">(<span class="pln">$xingming<span class="pun">,<span class="pln">$gongzisu<span class="pun">){</span></span></span></span></span></span>){</span></span>
  52. <span class="pln"><span class="pun"><span class="pln"> $this<span class="pun">-><span class="pln">xingming <span class="pun">=</span> $xingming</span>;</span></span></span></span>
  53. <span class="pln"><span class="pun"><span class="pln"> $this<span class="pun">-><span class="pln">gongzisu <span class="pun">=</span> $gongzisu</span>;</span></span></span></span>
  54. <span class="pln"><span class="pun"></span> </span>}
  55. <span class="pln"><span class="kwd"><span class="pln"> <span class="pun">function</span> kaizi</span>(){</span></span>
  56. <span class="pln"><span class="pun"><span class="pln"> $caiwu <span class="kwd">=<span class="pln"> <span class="pun">new</span> caiwu</span>();</span></span></span></span>
  57. <span class="pln"><span class="kwd"><span class="pln"> <span class="pun">return<span class="pln"> $caiwu<span class="pun">-><span class="pln">kaigonzi<span class="pun">(<span class="pln">$this<span class="pun">-><span class="pln">xingming<span class="pun">su<span class="pln"> <span class="pun"></span></span></span></span></span></span></span> </span></span> </span></span></span> </span>}</span>
  58. <span class="pln"><span class="pun">}</span></span>
  59. $lisi <span class="pun">=</span> new
  60. yuangong
  61. ("李四"<span class="pln">,<span class="pun"> <span class="pln">"6000"<span class="kwd">);<span class="pln">,<span class="pun"> <span class="str"><span class="pun"> <span class="pln"><span class="str"><span class="pun">echo $lisi</span>-></span>kaizi</span>();</span></span></span></span></span></span> </span></span>  
  62.      <span class="pun"> </span> 
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn