Aus*_*yde 6 php oop inheritance
我有以下父母和子课程:
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()";
}
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
array(1,2,3)
ChildObj::method()
array(1,2,3)
Run Code Online (Sandbox Code Playgroud)
实际输出:
array(1,2,3)
ParentObj::method()
NULL
Run Code Online (Sandbox Code Playgroud)
问题是,子对象无法访问数据属性,父对象拒绝调用子进程中的重写方法.
我做错了什么,或者有没有任何想法?
编辑:我应该澄清我正在实例化ChildObj$child = new ChildObj()
Gre*_*reg 10
您已声明data为私有,因此ChildObj将无法访问它 - 您需要将其保护为:
protected $data;
Run Code Online (Sandbox Code Playgroud)
我的PHP(5.2.8)打印ChildObj::method()- 您运行的是旧版本吗?