2013年3月25日月曜日

PHP final修飾子

final修飾子

final修飾子をつけることができるのはクラスとメソッドのみです。
クラスにfinal修飾子をつけると、そのクラスは継承できません。
メソッドにfinal修飾子をつけると、そのメソッドは子クラスでオーバーライドできません。
コンストラクタ、アクセッサもメソッドの一種なのでfinal修飾子をつけることがきます。


クラスにfinal修飾子をつけると、そのクラスは継承できません。
<?php
final class ParentClass {
}
//継承するとエラーになります。
class ChildClass extends ParentClass {
}
?>

メソッドにfinal修飾子をつけると、そのメソッドは子クラスでオーバーライドできません。
<?php
class ParentClass {
    public final function Method(){}
}

class ChildClass extends ParentClass {
    //オーバーライドするとエラー
    public function Method() {}
}
?>

コンストラクタにfinal修飾子をつけると、そのコンストラクタは子クラスでオーバーライドできません。
<?php
class ParentClass {
    public final function __construct(){}
}

class ChildClass extends ParentClass {
    //オーバーライドするとエラー
    public function __construct(){}
?>


0 件のコメント: