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

來源:互聯網
上載者:User

標籤:

物件導向萬物皆對象,將構成問題的事務分解到各個對象上,建立對象的目的不是為了完成一個工作,而是為了描述某個事務在解決問題中的行為,更符合人的思維習慣,代碼重用性高,可擴充性.__________________________________________________________________類的概念類是一種抽象的概念,是具有相同語義定義對象的集合(具有相同屬性和方法的集體),使用具體的類是不可行的,只能執行個體化。拿汽車舉例,汽車的設計圖紙就是類,汽車是對象。設計中重點是類的建立 現實生活中類的概念萬物皆為對象如我們使用的具體電腦就是對象,那電腦就是一個類。你去幼兒園接孩子,你說接孩子,人家一定不給你(除非認識你和知道你的孩子是誰),你要說出你孩子的名子,你的孩子就是具體的對象,孩子就是一個類 類名書寫規範     類名首字母大寫一個類定義在一個檔案中,並以.class.php做為檔案名稱結尾 __________________________________________________________________  對象物件控點用於區分不同對象。對象建立後,在記憶體中擷取一Block Storage空間,儲存空間的地址就是對象的標識或控制代碼 屬性在類中定義的變數,即為成員屬性,用於描述對象靜態特性的資料。如人的姓名,性別,首字母小寫 方法函數定義在類中即為成員方法,用於描述對象動態特性的操作行為,方法名不區分大小寫,不可重名,首字母小寫對象的生命週期建立後,生命週期開始,當程式結束後或程式員清除對象後即銷毀,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();
     

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.