PHP Class類與對象學習筆記

來源:互聯網
上載者:User

個人做的筆記.....用於借鑒,如有錯請指出,謝謝

 代碼如下 複製代碼

<?php
/*******************************************

   Class 對象執行個體說明( 普通類 )

*******************************************/
 class ClassDemo{
  public $PublicVar;
 
  private $PrivateVar;//私人變數 外部不能調用
 
  protected $ProtectedVar;//受保護變數 外部與子類不可訪問
 
  public static $StaticVar=0;//static 靜態變數 靜態方法 不能訪問非靜態方法與變數,非靜態方法與變數可以訪問靜太方法與變數
 
  const constVar='';//當你有一個屬性,不希望被修改,則考慮使用const 做成常量,使用 類名::常量名; 介面名::常量
  /*
    1.常量在定義的時候需要賦初值
    2.常量不能修改.
    3.常量名不能有 $, 一般是大寫, 預設是public
    4.常量在類的內部使用 self::常量的名稱 類名::常量的名稱
  */
  public function __construct( /*$name*/ ){//這個可以帶參數,帶了參數之後必建立時必須也帶有參數,不然會出錯
   //$this->PublicVar=$name;
   //self::$StaticVar++;//靜態變數內部存取方法  外部存取方法 對象名::變數名( ClassDemo::$StaticVar )
   $this->PublicVar='$PublicVar';
   $this->PrivateVar='$PrivateVar';
   $this->ProtectedVar='$ProtectedVar';
   self::$StaticVar++;
   echo "ClassDemo __construct<br />";
   }
  
  public function __destruct(){//解構函式
   }
  final public function fun(){
   /*
    final 關鍵字( PHP5 中出現 )
    希望方法不被其它的類繼承時間覆蓋, 可以使用final
   
    當這個關鍵字用來修飾類的時候,那麼這個類將不可被其它類給繼承(可以執行個體化)
   
    注:此關鍵字不能用於修飾變數

   */
   }
  }//End Class
/*******************************************

   Class 對象執行個體說明( 抽象類別 )

*******************************************/
 abstract class AbstractDemo{
  /***************************************
 
   1.抽象類別不能被執行個體化
  
   2.抽象類別不一定要包含abstract方法。
     也就是說抽象類別可以沒有abstract方法
    
   3.一旦包含了abstract方法,則這個類必須
     聲明為abstract
  
   4.抽象類別不能有函數體
  
   5.如果一個類繼續了某個抽象類別,則他必須實現
     該抽象類別的所有抽象方法。(除非它自己也聲明為抽象類別)
    
  ***************************************/
  }

/*******************************************

   Class 對象執行個體說明( 繼承類 )

*******************************************/
 class DemoTwo extends ClassDemo{
 
  }
/*******************************************

   Class 對象執行個體說明( 介面 )

*******************************************/
 interface Face{
  /*********************************
  1.當一個類實現了 某個介面,則要求該類必須實現這個介面的所有方法
  2.介面的方法都不能有方法體
  3.不能去執行個體化一個介面
  4.介面中可以有屬性,但是必須是常量,並且是public

  什麼情況下使用介面
 
   1.定規範
   2.定下規範,讓別的程式員來實現,比如:

  **********************************/
  public function Name();
 
  }
 
 interface Face2 extends Face{
  /*******************************
 
   繼承介面
   繼承介面時候不用去實現父介面的方法
 
  ********************************/
 
  const namevar=20;
 
  }
 
 class Demo implements Face2{
  /**********************************
 
   實現介面,可以同時實現多個介面
   當一個類去實現了某些介面,則必須把所有介面的方法,都實現
  
  **********************************/
 
  public $Name1=0;
 
  public function Name(){
  
   echo Face2::namevar;
  
   }
 
  }

?>

小結

在類內部訪問靜態成員屬性或者方法,使用 self::(注意不是 $slef),如:

 代碼如下 複製代碼

slef:: $country
slef:: myCountry()

在子類訪問父類靜態成員屬性或方法,使用 parent::(注意不是 $parent),如:

 代碼如下 複製代碼

parent:: $country
parent:: myCountry()

外部存取靜態成員屬性和方法為 類名/子類名:: ,如:

 代碼如下 複製代碼

Person::$country
Person::myCountry()
Student::$country

但靜態方法也可以通過普通對象的方式訪問。


•類/對象 函數

•__autoload — 嘗試載入未定義的類
•call_user_method_array — 調用一個使用者方法,同時傳遞參數數組(已廢棄)
•call_user_method — 對特定對象調用使用者方法(已廢棄)
•class_alias — 為一個類建立別名
•class_exists — 檢查類是否已定義
•get_called_class — 後期靜態繫結("Late Static Binding")類的名稱
•get_class_methods — 返回由類的方法名組成的數組
•get_class_vars — 返回由類的預設屬性組成的數組
•get_class — 返回對象的類名
•get_declared_classes — 返回由已定義類的名字所組成的數組
•get_declared_interfaces — 返回一個數組包含所有已聲明的介面
•get_declared_traits — 返回所有已定義的 traits 的數組
•get_object_vars — 返回由對象屬性群組成的關聯陣列
•get_parent_class — 返回對象或類的父類名
•interface_exists — 檢查介面是否已被定義
•is_a — 如果對象屬於該類或該類是此對象的父類則返回 TRUE
•is_subclass_of — 如果此對象是該類的子類,則返回 TRUE
•method_exists — 檢查類的方法是否存在
•property_exists — 檢查對象或類是否具有該屬性
•trait_exists — 檢查指定的 trait 是否存在

聯繫我們

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