PHP學習筆記——11.物件導向2

來源:互聯網
上載者:User

標籤:

1.靜態屬性/方法

①定義

  在屬性/方法前加static修飾,就稱之為靜態屬性/方法

  普通屬性/方法是依賴於對象的,必須在執行個體化對象後,
  才會出現在記憶體中,進行訪問及操作

  而靜態屬性/方法不依賴於對象,當類聲明後,即可進行訪問操作
  因此,其只會有一份,不會根據對象的增加而增加

②調用及訪問

  調用本類 self::$靜態屬性;self::靜態方法();

  調用父類 parent::$靜態屬性;parent::靜態方法();

  外部存取 類名::$靜態屬性;類名::靜態方法();

③延遲綁定

  父類中包含:a() b(self::a()) 子類中包含:a()
  當子類調用b()方法時,因其自身無b()方法,則找到父類的b()方法
  而b()方法中的self指其自身,也就是調用父類中的a()方法
  而將self改為static,則返回找到子類自身的a()方法

  總結:self是指當前所在的類;而static是指調用者

2.類常量

①定義

  只在類的內部發揮作用的常量稱為類常量

  又可以理解為不可修改的靜態屬性

  在屬性前添加const修飾,不能添加許可權修飾符

  聲明及使用時都不需要使用$符

②魔術常量

  PHP內建的類常量,無法設定值,其值是隨著環境變化而改變的

  __FILE__ 檔案的完整路徑和檔案名稱;常用於在初始化指令碼時,檢測網站的根目錄
  __LINE__ 檔案中當前的行號;常用於在DEBUG時,記錄錯誤資訊
  __DIR__檔案所在目錄
  __CLASS__ 返回當前的類名
  __METHOD__ 返回當前的方法名

3.單例模式

①作用

  為了防止某個類被多名開發人員反覆執行個體化,造成資源浪費
  而對其進行限制,只允許有一個執行個體存在,稱為單例模式

②文法

  class 類名 {
    //建立一個靜態保護屬性,用於存放執行個體化結果
    static protected $屬性名稱;
    //將構造方法設定為最終及保護,防止被繼承後重寫或直接執行個體化
    final protected function __construct () {

    }
    //建立靜態公用方法,用於在外部通過類直接調用
    static public function 方法名 () {
      //判斷是否已經存在一個執行個體
      if(self::$屬性名稱 instanceof self) {
        //若存在則直接返回
        return self::$屬性名稱;
      }else{
        //若不存在,則執行個體化後再返回
        self::$屬性名稱 = new self();
        return self::$屬性名稱;
      }
    }
  }
  $對象 = 類名::方法名();//通過調用類中的方法產生一個唯一的對象

③註解

  final修飾的類不能被繼承;final修飾的方法可以被繼承,但不能重寫

  對象 instanceof 類名 可用於判斷對象是否為該類的執行個體

4.抽象類別

①定義

  類前添加abstract修飾則為抽象類別;方法前加abstract修飾則為抽象方法

  抽象類別不能被執行個體化;抽象方法不能有方法體,即{}

  用於統一所有子類所具有的功能,正常化操作、增強可拓展性

②文法

  abstract class 父類 {
    public abstract function 方法名();
  }

③注意

  有抽象方法(包括繼承來的)的類一定是抽象類別;抽象類別裡不一定有抽象方法

  要對抽象類別進行執行個體化,需要先繼承,並完成所有抽象方法

5.介面

①定義

  是抽象類別的變體

  如果說類是對象的抽象,那麼介面就是類的抽象

  介面組合成不同的類,而類則執行個體化出不同的對象

②文法

  interface 介面名 {
    public function 方法();
  }

  class 類名 implements 介面1,介面2,... {
    public function 方法(){

    }
  }

③注意

  因介面中方法必須是抽象的,所以不需要加abstract

  一個介面可以繼承自另一個介面,與類的繼承相同

④抽象類別與介面的區別

  抽象類別中可以有普通屬性/方法/構造方法;介面中必須只有抽象方法

  抽象類別中的方法可以是私人的;介面中的方法只能是公用的

  一個類只能繼承自一個抽象類別;一個類卻可以實現多個介面

 

@zhnoah
出處:http://www.cnblogs.com/zhnoah/
本文著作權歸本人和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連 
接,否則保留追究法律責任的權利。

PHP學習筆記——11.物件導向2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.