鍍金池/ 問答/PHP/ PHP子類對象不能直接訪問父類的屬性嗎

PHP子類對象不能直接訪問父類的屬性嗎

class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    function printHello()
    {
        echo "This is Myclass".PHP_EOL;
        echo $this->public.PHP_EOL;
        echo $this->protected,PHP_EOL;
        echo $this->private,PHP_EOL;
    }
}
class MyClass2 extends MyClass
{
    public $public = 'Publi2c';
    protected $protected = 'Protected2';
    
    function printHello2()
    {
        echo $this->public.PHP_EOL;
        echo $this->protected,PHP_EOL;
        echo parent::$public,PHP_EOL; //這里報錯了。Uncaught Error: Access to undeclared static         
                                       //property: MyClass::$public
    }
}

$obj2 = new MyClass2();
$obj2->printHello2();

請問我注釋這里為什么出錯了?

回答
編輯回答
浪蕩不羈
報錯已經(jīng)告訴你了,父級的$public 不是一個靜態(tài)變量,應該使用$this->去獲取
2018年6月5日 22:10
編輯回答
故林

不是靜態(tài)變量啊

2018年4月10日 07:26
編輯回答
笑浮塵

子類繼承了父類,所以那個屬性就是子類的對象實例的屬性了。

沒錯,非靜態(tài)屬性是屬于對象實例的,不是屬于類的,所以不分子類父類。

靜態(tài)屬性才是屬于類的,才能通過parent::static::、self::這些關鍵字來訪問。

方法也是類似的。

2018年1月1日 10:30