で親プロパティおよびオーバーライドされたメソッドへのアクセス:は、次のように私は、親と子のクラスを持っている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,2,3)
ChildObj::method()
array(1,2,3)
を実際の出力:
array(1,2,3)
ParentObj::method()
NULL
問題は、子オブジェクトがデータプロパティにアクセスすることができず、親がchilでオーバーライドされたメソッドを呼び出すことを拒否することですd。
私は何か間違っているのですか、誰か意見がありますか?
EDIT: ChildObjがそれにアクセスすることはできませんので、私は、私はあなたがプライベートとしてdata
を宣言した$child = new ChildObj()
さて、privateをprotectedに変更すると、プロパティへのアクセスが修正されます。 –