目錄
面向對象
類的概念" >類的概念
物件的生命週期
 對象產生的步驟" > 對象產生的步驟
物件的記憶體分佈:
面向對象的特性
訪問修飾符(作用域描述符)
static靜態屬性與靜態方法
構造法&析構法
物件 final const
首頁 php教程 php手册 PHP中面相物件物件的知識點整理

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

Sep 11, 2016 am 11:19 AM

面向對象

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

類的概念

是一種抽象的概念,是具有相同語意定義物件的集合(具有相同屬性和方法的集體),使用具體的類別是不可行的,只能實例化。拿汽車舉例,汽車的設計圖就是類,汽車是物件。設計中重點是類別的創建
 
現實生活中類的概念
萬物皆為對像如我們使用的具體電腦就是對象,那電腦就是一個類別。你去幼稚園接孩子,你說接孩子,人家一定不給你(除非認識你和知道你的孩子是誰),你要說出你孩子的名子,你的孩子就是具體的對象,孩子就是一個類
 
類名書寫規範
     類別名首字母大寫一個類別定義在一個檔案中,並以.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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)