浅析php面向对象public private protected 访问修饰符

  PHP中有三种访问修饰符,分别是:

       public(公共的、默认)

  protected(受保护的)

  private(私有的)

  public(公共的、默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。

  protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问。

  private(私有的 ) 被定义为private的成员,对于类内部所有成员都可见,没有访问限制。对类外部不允许访问。

  

  图解

浅析php面向对象public private protected 访问修饰符

  demo

  

复制代码 代码如下:

  class Woman{

  public $name = "gaojin";

  protected $age = "22";

  private $height = "170";

  function info(){

  echo $this->name;

  }

  private function say(){

  echo "这是私有的方法";

  }

  }

  //$w = new Woman();

  //echo $w->info();

  //echo $w->name;//公共属性可以访问

  //echo $w->age;// 受保护属性,报致命错误

  //echo $w->height;// 受保护属性,报致命错误

  //私有方法,访问出错

  //$w->say(); // 私有方法,访问出错

  class Girl extends Woman{

  // 可以重新定义父类的public和protected方法,但不能定义private的

  //protected $name = "jingao"; // 可以从新定义

  function info(){

  echo $this->name;

  echo $this->age;

  echo $this->height;

  }

  function say(){

  //parent::say();//私有方法 不能被继承  如果父类的的say方法是protected 这里就不会报错

  echo "我是女孩";

  }

  }

  $g = new Girl();

  $g->say();//正常输出

  //echo $g->height;//私有属性访问不到 没输出结果

  //$g->info();//这是输出 gaojin22 $height是私有的属性没有被继承

  //$g->height ="12";//这里是重新定义 height属性 也赋值了

  //$g->info();//所以这里会输出来gaojin2212