finalメソッド

子クラスで、メソッドを、オーバーライド(再定義)できないようにするには、親クラスでメソッドを定義するときに、finalキーワードを前に付け、finalメソッドにする。

finalメソッドをオーバーライド(再定義)しようとすると、エラーとなる。

finalキーワードを付けられるのは、メソッドとクラス。プロパティには、finalキーワードを付けられない。

書式

class クラス名 // クラスを定義
{
    final function メソッド名() { // finalメソッドを定義
        メソッド内処理文;
    }
}

サンプル

「taxClass5」クラスの、「func_tax」メソッドを、オーバーライド(再定義)することはできるが、「func_echo」メソッドは、finalメソッドなので、オーバーライド(再定義)できない。

<?php
class taxClass5
{
    function func_tax( $var ) {
        return $var * ( 1 + 0.05 );
    }
    final function func_echo( $var ) {
        echo '税込:' . $this->func_tax( $var ) . '円<br />';
    }
}
class taxClass7 extends taxClass5
{
    function func_tax( $var ) {
        return $var * ( 1 + 0.07 );
    }
}
$var_class = new taxClass5();
$var_class->func_echo( 100 );
$var_class = new taxClass7();
$var_class->func_echo( 100 );
?>

↓↓↓出力結果↓↓↓

税込:105円
税込:107円

スポンサード リンク

カテゴリー: PHP, オブジェクト指向プログラミング タグ: パーマリンク