PHP 物件導向 (九)物件導向三大特徵

一句話兒發表於2020-01-18
  • 抽象性 將通用的資料和方法抽離出來形成一個抽象類

  • 多型性

    1. php本身就是天生的多型語言
    2. 當一個函式接收到不同物件時,會自動的判斷並呼叫對應的方法
    3. 多型利於類的維護和擴充套件
  • 繼承性

    作用: 將通用的資料和方法抽離出來形成一個抽象類, 解決程式碼複用,便於維護

  1. 方法過載
    1. php不能使用傳統的過載方法
    2. 傳統的方法過載

      function getName($name)

      function getName($name, $params)

  2. 屬性過載
    1. 當給不存在的屬性賦值時,類虎自動動態建立相對應的屬性
    2. 禁止屬性過載,public function set(){} 方法裡面什麼都不寫
  3. 方法重寫
    要求方法名和引數都一樣,引數型別也一樣,子類不能縮小父類訪問許可權
  4. 屬性重寫
    子類不能縮小父類訪問許可權
  5. 繼承本質
    子類與父類之間建立了查詢關係
抽象類

說明:當方法不確定具體實現功能的時候,可以定義為抽象類

  • 細節
    1. 抽象類不能例項化
    2. 抽象類可以有非抽象屬性和方法
    3. 含抽象方法的類必須定義為抽象類
    4. 如果一個非抽象類繼承了抽象類,必須實現抽象類的所有方法
介面

作用:解決抽象類單一繼承的問題,可以多繼承,解決程式碼複用問題

  • 細節
    1. 介面中的方法都是抽象方法,但不需要使用abstract來修飾
    2. 需實現介面中所有的抽象方法
    3. 介面中不能有普通成員屬性,但是可以有常量
    4. 介面可以多繼承
    5. 面向介面程式設計 (後面補充)
final關鍵字

作用:保護類不被繼承,及類方法不被重寫

  • 細節
    1. 當類不希望被繼承時,可以定義為final類
    2. 當類方法不希望被重寫時,可以定義為final方法
    3. final不能修飾成員屬性
    4. final方法不能被重寫,但是可以被繼承
物件導向程式設計的相關技術
  1. 物件克隆技術 防止克隆,定義私有的魔術方法__clone()
  2. 物件遍歷 foreach
  3. php的內建標準類 new stdClass
  4. 資料型別轉物件和物件轉陣列的說明
    1. (object)$name; 強制型別轉換
    2. (array)$obj;物件轉陣列後,私有變數還是不能直接訪問
  5. 物件序列化和反序列化
    1. 序列化 serialize() 物件轉換為字串 會呼叫 __sleep()魔術方法
    2. 反序列化 unserialize() 已序列化的字串轉物件 會呼叫 __wakeup()魔術方法
總結
  1. 類中只有屬性和方法
  2. 普通成員方法可以訪問靜態屬性也可以訪問非靜態屬性
  3. 物件 instanceof 類名 用於判斷物件是不是某個類的物件例項
  4. 物件的連用
  5. 所有都是基於一次請求操作

複製程式碼,即可執行。 謝謝你的瀏覽,如有錯誤,歡迎指正哈!!!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
寫的不好,就當是整理下思緒吧。

相關文章