php物件導向之資料隱藏

來源:互聯網
上載者:User
什麼是資料隱藏?

看到這個有的人會覺得挺不理解的。在前面的文章中,介紹類的時候,我們說定義變數用的關鍵詞是public,但是不止這一個,還有public、private、protected、static和final,這些關鍵詞是用來限定類成員,包括變數和方法的存取權限的。接下來,我們就先講解前三個關鍵詞的用法。

友情提示:

對成員變數和成員方法進行限定在關鍵字的使用上都是一樣的。所以這裡我們只以成員變數為例說明這幾種關鍵字的不同用法。對於成員方法同樣適用。

下面,我們來具體介紹這幾個關鍵詞:

(1)public

中文翻譯是公用的。顧名思義,就是公開的,不需要隱藏的資料資訊。可以在程式中的任何位置(類內、類外)被其他的類和對象調用。子類可以繼承和使用父類中所有的公用成員。

在講解本章之前,我們定義變數和方法的聲明都是用public,而所有的方法在預設狀態下也是public,所以對變數和方法的調用顯得十分混亂。為瞭解決這個情況,我們將要講述第二個關鍵字private。

因為之前都是用的public,所以這裡我們就不舉例子了。

(2)private

中文翻譯為私人的,私人的。被private修飾的變數和方法,只能在所在的類的內部被調用和修改,不可以在類的外部被訪問。在子類中也不可以。

private執行個體展示:

<?phpheader("content-type:text/html;charset=utf-8");class Preson{   private $name = "雷克賽";   public function setName($name){       $this -> name = $name;   }   public function getName(){       return $this ->name;   }}class Preson1 extends Preson{}$preson = new Preson();//正確的使用方式echo '我的名字叫';$preson ->setName("布裡茨");    //通過訪問成員方法進行賦值echo $preson -> getName();      //在通過訪問成員方法進行訪問//錯誤的使用方式echo '我的名字叫';echo Preson :: $name;

上述執行個體中,對私人變數$name的修改與訪問,只能通過調用成員方法來實現。如果直接調用,就會發生錯誤。

(3)protected

中文翻譯為保護的意思。private關鍵字可以將資料完全隱藏,除了在本類中,別的地方都不可以調用,子類中也不可以。但是有些情況是部分變數需要在子類中可以調用,但是對另外的類來說,還是要做到封裝。這個時候就要用到我們的protected關鍵字了。

用protected修飾的類成員,可以在本類和子類中被調用,但是在其他地方不能被調用。

protected的執行個體展示:

<?phpheader("content-type:text/html;charset=utf-8");class Preson{   protected $name = '維克托';}class Preson1 extends Preson{   public function showName(){       echo '只有真確的調用,我才會出現';       echo '<br/>';       echo '我的名字是:' . $this ->name;       echo '<br/>';   }}$preson = new Preson1();$preson -> showName();echo '你調用錯了,所以下面不報錯算我輸:';$preson -> name = '德萊文';

上述執行個體中,先用關鍵詞protected聲明一個變數,然後再子類的方法中調用一次,最後在類外直接調用一次,結果一目瞭然。

提示:

雖然在PHP中沒有對修飾變數的關鍵字做強制性的規定和要求,但從面相對象的特徵和設計方面考慮,一般使用private和protected關鍵字來修飾變數,以防止變數在類外被直接修改和調用。

聯繫我們

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