溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中面向?qū)ο蟮腇inal關(guān)鍵字使用方法

發(fā)布時(shí)間:2020-05-25 20:47:39 來(lái)源:億速云 閱讀:246 作者:鴿子 欄目:編程語(yǔ)言

1、案例一:

實(shí)踐目標(biāo):

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

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

$human = new Human();
$human->eat();
?>

運(yùn)行結(jié)果為:

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

2、案例二:

實(shí)踐目標(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();
?>

運(yùn)行結(jié)果為:

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

3、案例三:

實(shí)踐目標(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(){
        
    }
}
?>

運(yùn)行結(jié)果為:

Fatal error: Class NbaPlayer may not inherit from final class (Human) in D:\E-class\class-code\classing\index.php on line 14

4、案例四:

實(shí)踐目標(biāo):

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

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

//定義Nba球員類
class NbaPlayer extends Human{
    public function eat(){
        echo "NbaPlayer中的eat方法,重寫(xiě)了父類的eat方法<br/>";
    }
}
?>

運(yùn)行結(jié)果為:

Fatal error: Cannot override final method Human::eat() in D:\E-class\class-code\classing\index.php on line 14

到目前為止,我們應(yīng)該對(duì)final有了個(gè)清晰的了解,接下來(lái)學(xué)以致用,用我們學(xué)到的這個(gè)知識(shí)點(diǎn)來(lái)解決如下問(wèn)題

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

思路分析:

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

2.因?yàn)椴幌M惐焕^承,所以結(jié)合final的作用,我們可以把類定義成final類

3.類一旦定義成final類了,里面的方法自然就不會(huì)被重寫(xiě)了,因?yàn)闆](méi)有了子類,又怎么可以在子類中去重寫(xiě)呢

具體代碼如下:

<?php
final class MyDataOpClass{
    public function abs(){
        //求絕對(duì)值
    }
    //產(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();
?>

運(yùn)行結(jié)果如下:

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

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

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI