您好,登錄后才能下訂單哦!
實踐目標:
1、final類的定義格式為: final class 類名{}
<?php //定義“人”類 final class Human{ public function eat(){ echo "Human 中的eat方法被執行了<br/>"; } } $human = new Human(); $human->eat(); ?>
運行結果為:
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
問題:根據多年的經驗總結,很多數據的操作方法其實都是可以被復用的,除了在一個項目里用,很多項目都可以用,而且一個項目的很多地方都可以復用,所以打算把這些通用的方法都封裝到一個類中,但是這個類沒必要有子類,里面的方法我也不想讓它被重寫,該怎么做?
思路分析:
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(); ?>
運行結果如下:
產生隨機數方法
說明:這個例子有點簡單,但是希望大家注意自己的思路分析,要盡可能的準確清晰
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。