欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          PHP中面向?qū)ο笾瓼inal關(guān)鍵字詳解(代碼實例)

          本文目標(biāo):

          1、了解PHP中Final關(guān)鍵字的定義

          2、了解PHP中Final關(guān)鍵字的作用

          3、了解PHP中Final關(guān)鍵字的使用場景

          4、掌握PHP中Final關(guān)鍵字的具體實現(xiàn)

          還是按照之前一貫的思路,我們通過3W1H的方式進(jìn)行學(xué)習(xí),那么首先我們來了解一下

          (一)、了解PHP中Final關(guān)鍵字的定義(What)

          如果在一個類前加final,那么這個類就不能被繼承,如果在一個方法前加final,那么這個方法就不能被重寫

          (二)、了解PHP中Final關(guān)鍵字的作用(Why)

          作用主要有2點:

          1、防止類被繼承

          2、防止類的方法被重寫

          (三)、了解PHP中Final關(guān)鍵字的使用場景(Where)

          如果希望一個類沒有子類,或者一個類的方法不能被重寫,那么可以考慮用final實現(xiàn)

          (四)、掌握PHP中Final關(guān)鍵字的具體實現(xiàn)(How)

          總結(jié):

          1、final類的定義格式為: final class 類名{}

          2、特別注意,PHP5才有final關(guān)鍵字的概念,PHP5之前是沒有這個概念的

          3、final方法的定義格式為:final public(或者protected) function 方法名稱(參數(shù)…..){}

          4、類一旦被定義成final類,就不能被繼承,也就是它就不能有子類了

          5、方法一旦被定義成final方法,就不能被子類重寫

          所有的總結(jié)都是實踐得出來的,那么接下來,我們還是要一一證明下,這樣才好放心去用

          (五)、具體代碼

          1、案例一:

          實踐目標(biāo):

          1、final類的定義格式為: final class 類名{}

          <?php //定義“人”類 final class Human{     public function eat(){         echo "Human 中的eat方法被執(zhí)行了<br/>";     } }  $human = new Human(); $human->eat(); ?>

          運行結(jié)果為:

          Human 中的eat方法被執(zhí)行了

          2、案例二:

          實踐目標(biāo):

          1、final方法的定義格式為:final public(或者protected) function 方法名稱(參數(shù)…..){}

          <?php class Human{     final public function eat(){         echo "Human 中的 類型為final的eat方法被執(zhí)行了<br/>";     } } $human = new Human(); $human->eat(); ?>

          運行結(jié)果為:

          Human 中的 類型為final的eat方法被執(zhí)行了

          3、案例三:

          實踐目標(biāo):

          1、類一旦被定義成final類,就不能被繼承,也就是它就不能有子類了

          <?php //定義“人”類 final class Human{     public function eat(){         echo "Human 中的 類型為final的eat方法被執(zhí)行了<br/>";     } }  //定義Nba球員類 class NbaPlayer extends Human{     public function eat(){              } } ?>

          運行結(jié)果為:

          Fatal error: Class NbaPlayer may not inherit from final class (Human) in D:E-classclass-codeclassingindex.php on line 14

          4、案例四:

          實踐目標(biāo):

          1、方法一旦被定義成final方法,就不能被子類重寫

          <?php //定義“人”類 class Human{     final public function eat(){         echo "Human 中的 類型為final的eat方法被執(zhí)行了<br/>";     } }  //定義Nba球員類 class NbaPlayer extends Human{     public function eat(){         echo "NbaPlayer中的eat方法,重寫了父類的eat方法<br/>";     } } ?>

          運行結(jié)果為:

          Fatal error: Cannot override final method Human::eat() in D:E-classclass-codeclassingindex.php on line 14

          (六)、學(xué)以致用

          到目前為止,我們應(yīng)該對final有了個清晰的了解,接下來學(xué)以致用,用我們學(xué)到的這個知識點來解決如下問題

          問題:根據(jù)多年的經(jīng)驗總結(jié),很多數(shù)據(jù)的操作方法其實都是可以被復(fù)用的,除了在一個項目里用,很多項目都可以用,而且一個項目的很多地方都可以復(fù)用,所以打算把這些通用的方法都封裝到一個類中,但是這個類沒必要有子類,里面的方法我也不想讓它被重寫,該怎么做?

          思路分析:

          1.創(chuàng)建一個類,里面包含通常的數(shù)據(jù)操作方法

          2.因為不希望類被繼承,所以結(jié)合final的作用,我們可以把類定義成final類

          3.類一旦定義成final類了,里面的方法自然就不會被重寫了,因為沒有了子類,又怎么可以在子類中去重寫呢

          具體代碼如下:

          <?php final class MyDataOpClass{     public function abs(){         //求絕對值     }     //產(chǎn)生隨機(jī)數(shù)     public function rand(){         echo "產(chǎn)生隨機(jī)數(shù)方法";     }     //獲取數(shù)組中的最大值     public function getMax($numArr){              }     //獲取數(shù)組中的最小值     public function getMin($numArr){      }     //其他方法就此省略 } $mymath = new MyDataOpClass(); $mymath->rand(); ?>

          運行結(jié)果如下:

          產(chǎn)生隨機(jī)數(shù)方法

          說明:這個例子有點簡單,但是希望大家注意自己的思路分析,要盡可能的準(zhǔn)確清晰

          總結(jié):

          1、本文主要講解了final的定義和作用以及具體的實現(xiàn)

          希望本文能給大家?guī)硪欢ǖ膸椭?,謝謝大家?。?!

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號