PHP 面向?qū)ο?final類(lèi)與final方法
更新時(shí)間:2010年05月05日 23:44:00 作者:
如果我們不希望一個(gè)類(lèi)被繼承,我們使用final來(lái)修飾這個(gè)類(lèi)。這個(gè)類(lèi)將無(wú)法被繼承。
final---用于類(lèi)、方法前。
final類(lèi)---不可被繼承。
final方法---不可被覆蓋。
final類(lèi)不能被繼承。
如果我們不希望一個(gè)類(lèi)被繼承,我們使用final來(lái)修飾這個(gè)類(lèi)。這個(gè)類(lèi)將無(wú)法被繼承。比如我們?cè)O(shè)定的Math類(lèi),涉及了我們要做的數(shù)學(xué)計(jì)算方法,這些算法也沒(méi)有必要修改,也沒(méi)有必要被繼承,我們把它設(shè)置成final類(lèi)型。
<?
//聲明一個(gè)final類(lèi)Math
final class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類(lèi)。";
}
}
$math = new Math();
echo $math;
//聲明類(lèi)SuperMath 繼承自 Math類(lèi)
class SuperMath extends Math {
}
//執(zhí)行會(huì)出錯(cuò),final類(lèi)不能被繼承。
?>
程序運(yùn)行結(jié)果
final方法不能被重寫(xiě)
如果不希望類(lèi)中的某個(gè)方法被子類(lèi)重寫(xiě),我們可以設(shè)置這個(gè)方法為final方法,只需要在這個(gè)方法前加上final修飾符。
如果這個(gè)方法被子類(lèi)重寫(xiě),將會(huì)出現(xiàn)錯(cuò)誤。
<?
//聲明一個(gè)final類(lèi)Math
class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類(lèi)。";
}
public final function max($a,$b){
return $a > $b ? $a : $b ;
}
}
//聲明類(lèi)SuperMath 繼承自 Math類(lèi)
class SuperMath extends Math {
public final function max($a,$b){}
}
//執(zhí)行會(huì)出錯(cuò),final方法不能被重寫(xiě)。
?>
程序運(yùn)行結(jié)果
final類(lèi)---不可被繼承。
final方法---不可被覆蓋。
final類(lèi)不能被繼承。
如果我們不希望一個(gè)類(lèi)被繼承,我們使用final來(lái)修飾這個(gè)類(lèi)。這個(gè)類(lèi)將無(wú)法被繼承。比如我們?cè)O(shè)定的Math類(lèi),涉及了我們要做的數(shù)學(xué)計(jì)算方法,這些算法也沒(méi)有必要修改,也沒(méi)有必要被繼承,我們把它設(shè)置成final類(lèi)型。
復(fù)制代碼 代碼如下:
<?
//聲明一個(gè)final類(lèi)Math
final class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類(lèi)。";
}
}
$math = new Math();
echo $math;
//聲明類(lèi)SuperMath 繼承自 Math類(lèi)
class SuperMath extends Math {
}
//執(zhí)行會(huì)出錯(cuò),final類(lèi)不能被繼承。
?>
程序運(yùn)行結(jié)果
復(fù)制代碼 代碼如下:
Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 14
final方法不能被重寫(xiě)
如果不希望類(lèi)中的某個(gè)方法被子類(lèi)重寫(xiě),我們可以設(shè)置這個(gè)方法為final方法,只需要在這個(gè)方法前加上final修飾符。
如果這個(gè)方法被子類(lèi)重寫(xiě),將會(huì)出現(xiàn)錯(cuò)誤。
復(fù)制代碼 代碼如下:
<?
//聲明一個(gè)final類(lèi)Math
class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類(lèi)。";
}
public final function max($a,$b){
return $a > $b ? $a : $b ;
}
}
//聲明類(lèi)SuperMath 繼承自 Math類(lèi)
class SuperMath extends Math {
public final function max($a,$b){}
}
//執(zhí)行會(huì)出錯(cuò),final方法不能被重寫(xiě)。
?>
程序運(yùn)行結(jié)果
復(fù)制代碼 代碼如下:
Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 16
您可能感興趣的文章:
- PHP abstract與interface之間的區(qū)別
- 深入解讀php中關(guān)于抽象(abstract)類(lèi)和抽象方法的問(wèn)題分析
- PHP abstract 抽象類(lèi)定義與用法示例
- 詳談PHP中public,private,protected,abstract等關(guān)鍵字的用法
- PHP 抽象方法與抽象類(lèi)abstract關(guān)鍵字介紹及應(yīng)用
- php類(lèi)中的$this,static,final,const,self這幾個(gè)關(guān)鍵字使用方法
- PHP面向?qū)ο蟮倪M(jìn)階學(xué)習(xí)(抽像類(lèi)、接口、final、類(lèi)常量)
- php中final關(guān)鍵字用法分析
- php中static靜態(tài)變量的使用方法詳解
- php面向?qū)ο笾衧tatic靜態(tài)屬性和靜態(tài)方法的調(diào)用
- PHP中的靜態(tài)變量及static靜態(tài)變量使用詳解
- PHP中abstract(抽象)、final(最終)和static(靜態(tài))原理與用法詳解
相關(guān)文章
PHP預(yù)定義變量9大超全局?jǐn)?shù)組用法詳解
本文主要介紹PHP9個(gè)超全局?jǐn)?shù)組$_SERVER、$_GET、$_POST、$_COOKIE、$_FILES、$_ENV、$_REQUEST、$_SESSION、$GLOBALS的詳細(xì)用法。2016-04-04
PHP學(xué)習(xí)之輸出字符串(echo,print,printf,print_r和var_dump)
在PHP中,有四種方法輸出字符串。echo結(jié)構(gòu)可以一次輸出多個(gè)值;print()只可以輸出一個(gè)值;printf()可以格式化輸出;print_r()可以輸出數(shù)組,對(duì)調(diào)試很有好處。2011-04-04
WINDOWS服務(wù)器安裝多套PHP的另類(lèi)解決方案
WINDOWS服務(wù)器安裝多套PHP的另類(lèi)解決方案...2006-10-10

