1、了解PHP中Final關鍵字的定義
2、了解PHP中Final關鍵字的作用
3、了解PHP中Final關鍵字的使用場景
4、掌握PHP中Final關鍵字的具體實現
還是按照之前一貫的思路,我們透過3W1H的方式學習,那麼首先我們來了解一下
如果在一個類別前面加上final,那麼這個類別就不能被繼承,如果在一個方法前面加上final,那麼這個方法就不能被重寫
作用主要有2點:
#1、防止類別被繼承
2、防止類別的方法被重寫
如果希望一個類別沒有子類,或一個類別的方法不能被重寫,那麼可以考慮用final實作
總結:
1、final類別的定義格式為: final class 類別名稱{}
2、特別注意,PHP5才有final關鍵字的概念,PHP5之前是沒有這個概念的
3、final方法的定義格式為:final public(或protected) function 方法名稱(參數.....){}
4、類別一旦被定義成final類,就不能被繼承,也就是它就不能有子類別了
5、方法一旦被定義成final方法,就不能被子類別重寫
所有的總結都是實踐得出來的,那麼接下來,我們還是要一一證明下,這樣才好放心去用
1、案例一:
實踐目標:1、final類別的定義格式為: final class 類別名稱{}
<?php //定义“人”类 final class Human{ public function eat(){ echo "Human 中的eat方法被执行了<br/>"; } } $human = new Human(); $human->eat(); ?>
2、案例二:
實踐目標:
1、final方法的定義格式為:final public(或protected) function方法名稱(參數.....){}
<?php class Human{ final public function eat(){ echo "Human 中的 类型为final的eat方法被执行了<br/>"; } } $human = new Human(); $human->eat(); ?>
運行結果為:
Human 中的型別為final的eat方法被執行了
3、案例三:實踐目標:
1、類別一旦定義成final類,就不能繼承,也就是它就不能有子類別了
<?php //定义“人”类 final class Human{ public function eat(){ echo "Human 中的 类型为final的eat方法被执行了<br/>"; } } //定义Nba球员类 class NbaPlayer extends Human{ public function eat(){ } } ?>
運行結果為:Fatal error: Class NbaPlayer may not inherit from final class (Human) in D:\E-class\class-code\classing\index.php on line 14
4、案例四:
#實踐目標:
1、方法一旦定義成final方法,就不能用被子類別重寫<?php
//定义“人”类
class Human{
final public function eat(){
echo "Human 中的 类型为final的eat方法被执行了<br/>";
}
}
//定义Nba球员类
class NbaPlayer extends Human{
public function eat(){
echo "NbaPlayer中的eat方法,重写了父类的eat方法<br/>";
}
}
?>
Fatal error: Cannot override final method Human::eat() in D:\E-class\class-code\classing\index.php on line 14
(六)、學以致用
到目前為止,我們應該對final有了個清晰的了解,接下來學以致用,用我們學到的這個知識點來解決如下問題
1.建立一個類別,內麵包含通常的資料操作方法
###### 2.因為不希望類別繼承,所以結合final的作用,我們可以把類別定義成final類別###### 3.類別一旦定義成final類別了,裡面的方法自然就不會被重寫了,因為沒有了子類,又怎麼可以在子類別中去重寫呢#########具體程式碼如下:######<?php final class MyDataOpClass{ public function abs(){ //求绝对值 } //产生随机数 public function rand(){ echo "产生随机数方法"; } //获取数组中的最大值 public function getMax($numArr){ } //获取数组中的最小值 public function getMin($numArr){ } //其他方法就此省略 } $mymath = new MyDataOpClass(); $mymath->rand(); ?>
以上是PHP中物件導向之Final關鍵字詳解(程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!