PHP5的72變:理解類中public,private,protected關鍵字-訪問控制--第1變

php5 類的變量定義遵循一種訪問控制:

public 表示全局,類內部外部子類都可以訪問;
private表示私有的,只有本類內部可以使用;
protected表示受保護的,只有本類或子類或父類中可以訪問;

<?php

class BaseClass {

  public $public = 'public';

  private $private = 'private';
  protected $protected = 'protected';

  function __construct(){
  }

  function print_var(){
    print $this->public;echo '<br />';
    print $this->private; echo '<br />';
    print $this->protected; echo '<br />';
  }
}

class Subclass extends BaseClass {

  // public $public = 'public2';
  protected $protected ='protected2';
  function __construct(){
    echo $this->protected;//可以訪問,因爲類中定義爲受保護的,所以在本類或子類中可以,子類中還可以重複付值
    echo '<br />';
    echo $this->private;//error 因爲是私有的只有在定義她的類baseclass中可以用
  }
}

  $obj1 = new BaseClass();
  $obj1->print_var();
  //echo $obj1->protected;//error 因爲是受保護的,只有在本類內部或子類父類中可以調用
  //echo $obj1->private;//error 同上私有的,只有在本類內調用
  echo $obj1->public;

  echo "<hr />";

  $obj2 = new Subclass();
  echo '<br />';
  echo $obj2->public;echo '<br />';
  echo $obj2->protected;
  //echo $obj2->private;//error
  //echo $obj2->protected;//error

?>


其實新手也可以這樣理解:

public 相當於Var聲明的~~整個頁面隨時可以修改 
private 只能在所屬類中操作. 
protected 有繼承關係的類內都可操作. 

注意:

      private,protected 聲明的成員,在實例化後,對象是不能直接調用的。如:echo $obj1->protected;是錯誤的。


未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章