【S4】問2解答例
<?php
/**
* 抽象クラス
*/
abstract class Product
{
protected int $price;
public function __construct(int $price)
{
$this->price = $price;
}
abstract public function getPrice(): int;
}
<?php
/**
* Bookクラス
*/
class Book extends Product
{
public function getPrice(): int
{
return $this->price;
}
}
<?php
/**
* Electronicsクラス
*/
class Electronics extends Product
{
public function getPrice(): int
{
return $this->price;
}
}
<?php
/**
* DiscountedBookクラス
*/
class DiscountedBook extends Book
{
private float $discount;
public function __construct(int $price, float $discount)
{
parent::__construct($price);
$this->discount = $discount;
}
public function getPrice()
{
return $this->price - ($this->price * $this->discount / 100);
}
}
<?php
// Book クラスを使用
$book = new Book(30);
echo '書籍の価格: $' . $book->getPrice() . PHP_EOL;
// Electronics クラスを使用
$electronic = new Electronics(500);
echo '電子機器の価格: $' . $electronic->getPrice() . PHP_EOL;
// DiscountedBook クラスを使用
$discountedBook = new DiscountedBook(40, 20);
echo '割引書籍の価格: $' . $discountedBook->getPrice() . PHP_EOL;