關於PHP類的封裝與繼承

來源:互聯網
上載者:User
本篇文章主要介紹關於PHP類的封裝與繼承,感興趣的朋友參考下,希望對大家有所協助。

封裝

把成員方法和成員屬性封裝到類中,隱藏屬性和方法實現的細節,通過public、protected、private等限定類成員的存取權限,資料被保護在內部,只通過被授權的成員方法才可以操作,儘可能的對成員進行封裝。

public:方法或者屬性在任何範圍下都可以訪問到,而且是預設的,如果沒有為一個屬性或方法指定存取修飾詞,它將是public。
protected:本類和子類可以訪問,外部對象不可以調用。
private:只能在本類訪問,子類與外部對象都不可能調用。經過private標記的方法或者屬性可以在繼承類中重新定義,每一個類只能看到它自己定義的私人方法。

這三個修飾符從作用範圍上來講應該像這樣從大到小排序:public→protected→private之所以說是在作用範圍上,是因為類把一些屬性和方法進行了封裝,這個封裝就決定了資料的“可見度”,這樣我們在類的外面不能夠隨意修改所定義的屬性和方法而只能夠進行調用,這就是封裝的好處,同時也提高了安全性。
我們給出程式碼範例:

 class myClass{   public $public="Public";    //public屬性  protected $protected="Protected"; //protected屬性  private $private="Private";   //private 屬性  function say_Hello() {    //public屬性   //只是舉例說明,自行新增內容  }   $obj=new myClass();  echo $obj->public;  //echo $obj->protected;  //echo $obj->private;

通過運行以上樣本我們得到一個“Public”,但當你把//echo $obj->private;的注釋去掉時,你會得到一下如下的錯誤:

Fatal error: Cannot access protected property myClass::$protected in E:apachehtdocsexamplefile.php on line 13。

可以看到我們不能隨意去訪問類的屬性定義,我們在“外面”是不知道這個類中到底有那些成員,因為這些成員對於其他的類可能是不可的。當然如果我們一定要訪問或者修改定義為“私人”的屬性時,也可以使用PHP所提供的系統方法:_get()和_set()。

繼承

可以使一個類繼承並擁有另一個已經存在類的成員屬性和方法,被繼承的類稱為父類或基類,繼承類為子類。通過extends關鍵字實現繼承關係。通俗來說,要有繼承就得有一個“根源”,這“根源”你可能想像你以後生了兒子或者女兒,他們會從你這裡得到一些“東西(屬性和方法)”,這樣你的“後代”就是持有你(根源)所有的一些特徵了。

產生“根源”類(父類或者基類)文法:class father{
}

產生“後代”(子類)文法:class son extends father{
}

PHP extends類繼承範例程式碼:

class father{  protected $name;  function __construct($name){  //建構函式   $this->name=$name;  }   function work(){   echo "{$this->name}我在工作; }  function __destruct(){}  //解構函式}  class son extends father{  //繼承父類 function play(){   echo "{$this->name}我在玩遊戲; }  }   $my_father=new father(“爸爸”);  //建立父類對象 $my_father->work();  $my_son=new son(“兒子”);  $my_son->work();  $my_son->play();

解析:在父類father裡,我們定義了一般的屬性和方法,然後定義子類。你可能發現在子類裡內是沒有建構函式和解構函式的,因為子類是繼承了父類的所有方法,所以可以調用$my_son->work(); 這就是PHP類的繼承了。另外要注意:PHP不能多層繼承,如:class A extends B extends C,這樣的繼承在PHP中是無效的,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.