程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中面相對象對象的知識點整理,php面相對象知識點

PHP中面相對象對象的知識點整理,php面相對象知識點

編輯:關於PHP編程

PHP中面相對象對象的知識點整理,php面相對象知識點


面向對象

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

類的概念

類 是一種抽象的概念,是具有相同語義定義對象的集合(具有相同屬性和方法的集體),使用具體的類是不可行的,只能實例化。拿汽車舉例,汽車的設計圖紙就是類,汽車是對象。設計中重點是類的創建   現實生活中類的概念 萬物皆為對象如我們使用的具體電腦就是對象,那電腦就是一個類。你去幼兒園接孩子,你說接孩子,人家一定不給你(除非認識你和知道你的孩子是誰),你要說出你孩子的名子,你的孩子就是具體的對象,孩子就是一個類   類名書寫規范      類名首字母大寫一個類定義在一個文件中,並以.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. //類裡面的方法不能修改
  2. //類不能被繼承
  3. final class souji {
  4. final public $pinpai; //報錯
  5. final function congdian() { //無效
  6. echo $this->pinpai . "手機通過10v電壓來充電";
  7. }
  8. public function kaijidonghua() {
  9. echo "<<< 沒有開機動畫 >>>>";
  10. }
  11. }
  12. class moto extends souji {
  13. public function __construct() {
  14. // $this->pinpai = "摩托羅拉";
  15. $this->congdian();
  16. }
  17. public function kaijidonghua() {
  18. echo "摩托羅拉商標";
  19. }
  20. }
  21. $li = new moto();
  22. $li->kaijidonghua();
  23. //定義常量
  24. define("WEBNAME", "文豆");
  25. function aa(){
  26. echo WEBNAME."專注PHPWEB開發";
  27. }
  28. aa();
  29. class caiwu{
  30. const suilv=0.05;
  31. function __construct(){
  32. echo WEBNAME;
  33. }
  34. function kaigonzi($xingming,$gongzi){
  35. $gongzi = $gongzi-$gongzi*self::suilv;
  36. return $xingming."的工資是:".$gongzi."元";
  37. }
  38. }
  39. /*員工類*/
  40. class yuangong{
  41. private $xingming;//姓名
  42. private $gongzisu;//工資數
  43. function __construct($xingming,$gongzisu){
  44. $this->xingming = $xingming;
  45. $this->gongzisu = $gongzisu;
  46. }
  47. function kaizi(){
  48. $caiwu = new caiwu();
  49. return $caiwu->kaigonzi($this->xingming, $this->gongzisu);
  50. }
  51. }
  52. $lisi = new yuangong("李四", "6000");
  53. echo $lisi->kaizi();
         

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved