微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP中访问父属性和重写方法

我有以下父母和子课程:
abstract class ParentObj {
    private $data;
    public function __construct(){
        $this->data = array(1,2,3);
        var_dump($this->data);

        $this->method();
    }
    public function method(){
        echo "ParentObj::method()";
    }
}
class Childobj extends ParentObj {
    public function __construct(){
        parent::__construct();
        var_dump($this->data);
    }
    public function method(){
        echo "Childobj::method()";
    }
}

预期产量:

array(1,3)
Childobj::method()
array(1,3)

实际输出

array(1,3)
ParentObj::method()
NULL

问题是,子对象无法访问数据属性,父对象拒绝调用子进程中的重写方法.

我做错了什么,或者有没有任何想法?

编辑:我应该澄清我将Childobj实例化为$child = new Childobj()

您已将数据声明为私有,因此Childobj将无法访问它 – 您需要将其保护为:
protected $data;

我的PHP(5.2.8)打印Childobj :: method() – 你运行的是旧版本吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐