首頁  >  文章  >  後端開發  >  php中public,private,protected屬性的定義、用法、區別實例詳解

php中public,private,protected屬性的定義、用法、區別實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-03 09:55:275778瀏覽

public: 公有屬性或方法

在子類別中可以透過self::var 或self::method 來呼叫,可以透過parent::method來呼叫父類別中的方法,但不能呼叫公有屬性.

在實例中可以透過$obj->var或self::method 來呼叫

protected: 受保護類型

#在子類別中可以透過self::var 或self::method呼叫, 可以透過parent::method來呼叫父類別中的方法
在實例中不能透過$obj->var 來呼叫  protected類型的方法或屬性

private: 私有類型

該類型的屬性或方法只能在該類別中使用,在該類別的實例、子類別中、子類別的實例中都不能調用私有類型的屬性和方法

2.self 和parent 的區別
a).在子類別中常用到這兩個物件。他們的主要差異在於self可以呼叫父類別中的公有或受保護的屬性,但parent不可以呼叫

b).self:: 它表示目前類別的靜態成員(方法與屬性) 與$this 不同,$this是指當前物件

<?php
class BaseClass {
  public $public = &#39;public&#39;;
  private $private = &#39;private&#39;;
  protected $protected = &#39;protected&#39;;
  function construct(){
  }
  function print_var(){
    print $this->public;echo &#39;<br />&#39;;
    print $this->private; echo &#39;<br />&#39;;
    print $this->protected; echo &#39;<br />&#39;;
  }
}

class Subclass extends BaseClass {
  // public $public = &#39;public2&#39;;
  protected $protected =&#39;protected2&#39;;
  function construct(){
    echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值
    echo &#39;<br />&#39;;
    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 &#39;<br />&#39;;
  echo $obj2->public;echo &#39;<br />&#39;;
  echo $obj2->protected;
  //echo $obj2->private;//error
  //echo $obj2->protected;//error
?>

總結

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

以上是php中public,private,protected屬性的定義、用法、區別實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn