#abstructとは
クラスを抽象化するための仕組み。
abstructクラスを親として他のクラスを継承させる。
##abstructクラスを使わない場合
もし子クラスのshowメソッドを消してしまっても、
親クラスにshowメソッドがあるので、問題なく動いてしまう。
class Post
{
protected $text;
public function __construct($newText)
{
$this->text = $newText;
}
public function show()
{
echo $this->text . PHP_EOL;
}
}
class SponsoredPost extends Post
{
private $sponsor;
public function __construct($text, $sponsor)
{
parent::__construct($text);
$this->sponsor = $sponsor;
}
// 間違って消してしまう
// public function show()
// {
// echo $this->text . PHP_EOL;
// echo $this->sponsor . PHP_EOL;
// }
}
##そこでabstructを使う
###使い方
①定義したクラスの前にabstructクラスを作成する。
②クラスの中に、子クラスでその都度定義してもらいたいメソッドの名前を書く。
③abstructクラスが親クラスとなるように、それぞれのクラスに継承させる。
(④)親がBasePostに移ったので、共有の部品はBasePostに移す
abstract class BasePost
{
//④
protected $text;
public function __construct($newText)
{
$this->text = $newText;
}
//
abstract public function show();
}
class Post extends BasePost
{
public function show()
{
echo $this->text . PHP_EOL;
}
}
class SponsoredPost extends BasePost
{
private $sponsor;
public function __construct($text, $sponsor)
{
parent::__construct($text);
$this->sponsor = $sponsor;
}
public function show()
{
echo $this->text . PHP_EOL;
echo $this->sponsor . PHP_EOL;
}
}