0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP オブジェクト指向 abstructとは

Posted at

#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;
  }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?