【发布时间】:2009-06-29 13:10:55
【问题描述】:
我有如下的父类和子类:
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,2,3)
ChildObj::method()
array(1,2,3)
实际输出:
array(1,2,3)
ParentObj::method()
NULL
问题是,子对象无法访问数据属性,父对象拒绝调用子对象中被覆盖的方法。
是我做错了什么,还是有人有什么想法?
编辑:我应该澄清一下,我将 ChildObj 实例化为 $child = new ChildObj()
【问题讨论】:
-
好的,将私有更改为受保护修复了属性访问。
标签: php oop inheritance