继承php中的属性

时间:2011-01-21 16:21:06

标签: php oop inheritance properties

我有一个超类,其中包含属性&设置它们的方法

class Super{
    private $property;

    function __construct($set){
        $this->property = $set;
    }
}

然后我有一个需要使用该属性的子类

class Sub extends Super{
    private $sub_property

    function __construct(){
        parent::__construct();
        $this->sub_property = $this->property;
    }
}

但我一直收到错误

Notice: Undefined property: Sub::$property in sub.php on line 7

我哪里错了?

3 个答案:

答案 0 :(得分:8)

错误在于它正在尝试找到一个名为$ property的局部变量,该变量不存在。

要在对象上下文中引用$ property,您需要$this和箭头。

$this->sub_property = $this->property;

其次,上面的行会失败,因为$propertyprivate类的Super。改为protected,所以它是继承的。

protected $property;

第三,(感谢Merijn,我错过了这个),Sub需要扩展Super。

class Sub extends Super

答案 1 :(得分:3)

您需要保护$ sub_property而不是私有。

答案 2 :(得分:2)

您还需要指定子类从超类扩展:

class Sub extends Super {
   // code
}