首頁  >  文章  >  後端開發  >  php中對屬性或方法的存取控制的介紹(程式碼範例)

php中對屬性或方法的存取控制的介紹(程式碼範例)

不言
不言轉載
2018-10-25 16:44:352017瀏覽

這篇文章帶給大家的內容是關於php中對屬性或方法的存取控制的介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

PHP中對屬性或方法的存取控制,是透過在前面加上關鍵字public(公有)、protected(受保護)或 private(私有)來實現的。被定義為public的類別成員可以在任何地方被訪問,被定義為protected的類別成員則可以被自己以及其子類別和父類別存取。被定義為private的類別成員則只能被其定義所在的類別存取。

類別屬性必須定義為public、protected或private。如果用var定義,則視為public。子類別可以修改基底類別public和protected的屬性的值。

<?php
class A{
    var $a="a";
    protected $b="b";
    private $c="c";
    
    function printVar(){
        echo $this->a.";".$this->b.";".$this->c.";"."\n";
    }
}
class B extends A{
    public $a="aa";
    protected $b="bb";
    private $c="cc";
}
$a=new A();
$a->printVar();
$b=new B();
$b->printVar();
?>

 類別的必須定義為public、protected或private。若未指定則視為public。子類別可以覆蓋基底類別public和protected的函數。

<?php
class A{
    public function fa(){
        echo "A->fa\n";
    }
    protected function fb(){
        echo "A->fb\n";
    }
    private function fc(){
        echo "A->fc\n";
    }
    function showFoo(){
        $this->fa();
        $this->fb();
        $this->fc();
    }
}
class B extends A{
    function fa(){
        echo "B->fa\n";
    }
    protected function fb(){
        echo "B->fb\n";
    }
    private function fc(){
        echo "B->fc\n";
    }
}
$a=new A();
$a->showFoo();
$b=new B();
$b->showFoo();
?>

同一個類別的對象,即使不是同一個實例也可以互相存取對方的私有與受保護成員,因為這些對象的內部具體實現的細節都是已知的。

<?php
class A
{
    private $a;

    public function __construct($a)
    {
        $this->a = $a;
    }

    private function fa()
    {
        echo &#39;private method fa.&#39;;
    }

    public function foo(A $other,$v)
    {
        $other->a = $v;
        var_dump($other->a);
        $other->fa();
    }
}

$a = new A(&#39;a&#39;);
$aa=new A(&#39;aa&#39;);
$a->foo($aa,&#39;newA&#39;);
?>

以上是php中對屬性或方法的存取控制的介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除