PHP 快速導覽 - final 類別與方法

使用 final 宣告的類別 (class) 不能被繼承,同樣的,使用 final 宣告的方法 (method) 不能被子類別 (subclass) 改寫。



舉例如下
<?php
class Demo {
    public function do_something() {
        echo "1\n";
    }
   
    final public function do_something2() {
        echo "2\n";
    }
}

class Demo2 extends Demo {
    public function do_something2() {
        echo "3\n";
    }
}

$d = new Demo2();
$d->do_something();
$d->do_something2();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class15.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


此例的 Demodo_something2()final 方法
final public function do_something2() {
    echo "2\n";
}


Demo2 繼承自 Demo ,若執行 do_something2() 會發生錯誤



final 類別則不能被繼承,例如
<?php
final class Demo3 {
   public function do_something() {
       echo "1\n";
   }
}

class Demo4 extends Demo3 {}

$d = new Demo4();
$d->do_something();

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class16.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2013 年 2 月 */
?>


Demo3final 類別
final class Demo3 {


Demo4 繼承 Demo3 同樣會發生錯誤



中英文術語對照
類別class
方法method
子類別subclass


您可以繼續參考
類別與物件


相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/language.oop5.final.php

沒有留言: