Javaのような abstract が定義できるようになりました。
abstract とは
「抽象的な, 観念的な, 理論的な; 非現実的な,」という意味になるのですが、まさにそういう感じで、定義した時点では使えません。
abstract class ABClass {
abstract function hoge();
function hoge2(){
echo "hogehoge";
}
}
こんな感じに定義します。
$obj = new ABClass;
はエラーとなります。
使うには、
abstract class ABClass {
abstract function hoge();
function hoge2(){
echo "hogehoge";
}
}
class MyClass extend ABClass {
function hoge()
{
echo "yes!";
}
}
$obj = new MyClass;
$obj->hoge();
$obj->hoge2(); // ←abstract class で定義したメンバも使える
のようにします。
MyClass は hoge を実装しないとエラーになります。
インタフェースに似ていますね。
まあ、こういう機能が追加されました。
って、
interface に似てるじゃん、って思うかもしれませんが、abstract なクラスは、機能を実装できるという点で interface と違います(上記 hoge2メソッド)。
まあ、インタフェースに機能を実装しておいて、下位クラスで使いたいという場合には abstract を使いましょう、という感じです。
(インタフェースには機能を実装できないため)
スポンサードリンク
もどる