抽象クラスと派生クラスの例を次に示します。クラスAには、クラスBに実装されている抽象メソッド「collectData」が1つあります。メソッド「getData」が呼び出されると、「collectData」が呼び出され、プライベートメンバー変数「$data」に値が設定されます。その後、getDataはこの変数の内容を返します。これを実行すると、戻り値はarray(1、2、3)になると予想されます。しかし、それは空の配列です。なんで?ちなみに私はPHP5.3.10を使用しています。
<?php
abstract class A
{
private $data;
public function __construct()
{
$this->data = array();
}
abstract protected function collectData();
public function getData()
{
$this->collectData();
return $this->data;
}
}
class B extends A
{
protected function collectData()
{
$this->data = array(1, 2, 3);
}
}
$test = new B();
$data = $test->getData();
print_r($data);