クラスの継承・メソッドのオーバーライドの制限
final修飾子
通常は、クラスの継承もメソッドのオーバーライドも制限無く行えますが、「final
修飾子」で宣言されたクラスの派生クラスは定義出来なくなり、また「final
修飾子」で宣言されたメソッドはオーバーライド出来なくなります。以下のサンプルと結果をご覧下さい。
<pre>
<?php
class BASE{
public function normal_method(){
//
}
#メソッドを「final」宣言
final public function final_method(){
//
}
}
#クラスを「final」宣言
final class SUB extends BASE{
public function normal_method(){
//
}
#「final」宣言されたメソッドをオーバーライドする
}
#「final」宣言されたクラスを継承する
?>
</pre>
(Fatal error:「final」宣言されたメソッドのオーバーライドは出来ない)
(Fatal error:「final」宣言されたクラスは継承出来ない)
例によって、コメントアウトしている所で「E_ERROR
」エラーが発生します。
「例外処理」の、「Exception」クラス(定義済みクラス)の「get*()
」メソッドが「final
」宣言されていて、派生クラスでオーバーライドされないように保護されています。
メソッドの機能が確定し、派生クラスでオーバーライドされるのを防いだりするのに便利な機能です。
作成日:2004年12月31日 最終更新日:2004年12月31日
【通常モード で表示】