這節課我們來說一下關於final關鍵字的概念和用法。
什麼是final關鍵字?
final中文翻譯為“最終的”,“最後的”。在聲明一個類之前用final關鍵詞修飾,說明這個函數將不能在任何子類中被重載,繼承,也就是說,被final修飾的類將不能再有子類。
之前的課程我們說了4種關鍵字,public、private、protected、static,分別是公用、私人、保護、靜態。用法及樣本在前面的課程都有,想學習的同學可以參見前面的課程:
php物件導向之靜態方法使用
php物件導向之資料隱藏
下面我們用執行個體來對比下final和其他關鍵字有什麼不一樣,再來分析下final的用法:
final用法執行個體詳解:
<?phpheader("content-type:text/html;charset=utf-8");class A{ //聲明類public $num = "23";final function operation(){ //建立方法,用final關鍵字echo '上面變數$num數字是 ' . $this->num ;}}class B extends A{ //建立子類B繼承A類public $num = "50";function operation(){echo '這個變數$num數字是 ' . $this->num ;}}$Num = new B(); //執行個體化子類$Num ->operation(); //調用子類中的方法
我們先建立了一個A類,在A類中添加方法,但是在方法前的關鍵字我們用了final,也就是說,A類中的方法operation()將不能再被繼承、重載。接著又建立B類去繼承A類,包括不能被繼承的方法operation(),啟動並執行結果就是只有報錯。
上述樣本中禁止了在B類中重載A類中的operation()方法。這樣做只會報錯。
如果final寫在類之前,那麼講禁止整個類被繼承。比如上面的樣本:
final class A{}
這樣寫,整個A類都將不能被繼承、重載。