PHPに関する質問です。(オーバーライド)
PHPに関する質問です。
以下のコードですが、結果としては、3パーセント割引された商品価格が$priceに入るという結果を期待しているのですが、親クラスのgetPriceメソッドが呼び出されていないようです。
なぜでしょうか?詳しい方、ご教示ください。
参考:http://www.objective-php.net/basic/override
class Product
{
protected $price;
protected $discountRate = 0.03;
public function getPrice()
{
$price = $this->price - ($this->price * $this->discountRate);
return $this->price;
}
public function setPrice($price)
{
$this->price = $price;
}
}
class FoodProduct extends Product
{
private $expire = 15;
public function getExpire()
{
return $this->expire;
}
public function decrementExpire()
{
$this->expire--;
return $this->getExpire();
}
public function getPrice()
{
$price = parent::getPrice();
if($this->expire <= 10){
$price = $price / 2;
}
return $price;
}
}
$prd = new FoodProduct();
$prd->setPrice(100);
$expire = $prd->getExpire();
while($expire > 0){
echo '賞味期限:'.$expire . '日 価格:'.$prd->getPrice().'<br>';
$expire = $prd->decrementExpire();
}