php: 抽象クラスとインターフェース

抽象クラス

他のクラスによって継承されることを前提としたクラス。そのクラス自体をインスタンス化して使うことはできない。
クラスの宣言時にabstractをつける。

<?php

abstract class BaseUser{
  public $name;
  abstract public function showName();
}

class User extends BaseUser{
  public function showName(){
    echo 'SATO';
  }
}

?>

実装のあるメソッド(ここではshowName)を持つことが可能である。

インターフェース

抽象クラスと似ているが、クラス内では実体のない抽象メソッドしか持つことができない。
また、1つのみのクラスしか継承できない抽象クラスに対し、複数のクラスを継承することができる。


interface classInterface { const val = 'ABC'; public function func(); }