PHP 面向?qū)ο?final類與final方法
更新時(shí)間:2010年05月05日 23:44:00 作者:
如果我們不希望一個(gè)類被繼承,我們使用final來(lái)修飾這個(gè)類。這個(gè)類將無(wú)法被繼承。
final---用于類、方法前。
final類---不可被繼承。
final方法---不可被覆蓋。
final類不能被繼承。
如果我們不希望一個(gè)類被繼承,我們使用final來(lái)修飾這個(gè)類。這個(gè)類將無(wú)法被繼承。比如我們?cè)O(shè)定的Math類,涉及了我們要做的數(shù)學(xué)計(jì)算方法,這些算法也沒(méi)有必要修改,也沒(méi)有必要被繼承,我們把它設(shè)置成final類型。
<?
//聲明一個(gè)final類Math
final class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類。";
}
}
$math = new Math();
echo $math;
//聲明類SuperMath 繼承自 Math類
class SuperMath extends Math {
}
//執(zhí)行會(huì)出錯(cuò),final類不能被繼承。
?>
程序運(yùn)行結(jié)果
final方法不能被重寫
如果不希望類中的某個(gè)方法被子類重寫,我們可以設(shè)置這個(gè)方法為final方法,只需要在這個(gè)方法前加上final修飾符。
如果這個(gè)方法被子類重寫,將會(huì)出現(xiàn)錯(cuò)誤。
<?
//聲明一個(gè)final類Math
class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類。";
}
public final function max($a,$b){
return $a > $b ? $a : $b ;
}
}
//聲明類SuperMath 繼承自 Math類
class SuperMath extends Math {
public final function max($a,$b){}
}
//執(zhí)行會(huì)出錯(cuò),final方法不能被重寫。
?>
程序運(yùn)行結(jié)果
final類---不可被繼承。
final方法---不可被覆蓋。
final類不能被繼承。
如果我們不希望一個(gè)類被繼承,我們使用final來(lái)修飾這個(gè)類。這個(gè)類將無(wú)法被繼承。比如我們?cè)O(shè)定的Math類,涉及了我們要做的數(shù)學(xué)計(jì)算方法,這些算法也沒(méi)有必要修改,也沒(méi)有必要被繼承,我們把它設(shè)置成final類型。
復(fù)制代碼 代碼如下:
<?
//聲明一個(gè)final類Math
final class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類。";
}
}
$math = new Math();
echo $math;
//聲明類SuperMath 繼承自 Math類
class SuperMath extends Math {
}
//執(zhí)行會(huì)出錯(cuò),final類不能被繼承。
?>
程序運(yùn)行結(jié)果
復(fù)制代碼 代碼如下:
Fatal error: Class SuperMath may not inherit from final class (Math) in E:\PHPProjects\test.php on line 14
final方法不能被重寫
如果不希望類中的某個(gè)方法被子類重寫,我們可以設(shè)置這個(gè)方法為final方法,只需要在這個(gè)方法前加上final修飾符。
如果這個(gè)方法被子類重寫,將會(huì)出現(xiàn)錯(cuò)誤。
復(fù)制代碼 代碼如下:
<?
//聲明一個(gè)final類Math
class Math{
public static $pi = 3.14;
public function __toString(){
return "這是Math類。";
}
public final function max($a,$b){
return $a > $b ? $a : $b ;
}
}
//聲明類SuperMath 繼承自 Math類
class SuperMath extends Math {
public final function max($a,$b){}
}
//執(zhí)行會(huì)出錯(cuò),final方法不能被重寫。
?>
程序運(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)類和抽象方法的問(wèn)題分析
- PHP abstract 抽象類定義與用法示例
- 詳談PHP中public,private,protected,abstract等關(guān)鍵字的用法
- PHP 抽象方法與抽象類abstract關(guān)鍵字介紹及應(yīng)用
- php類中的$this,static,final,const,self這幾個(gè)關(guān)鍵字使用方法
- PHP面向?qū)ο蟮倪M(jìn)階學(xué)習(xí)(抽像類、接口、final、類常量)
- 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 header Content-Type類型小結(jié)
php header Content-Type類型小結(jié),很多情況下需要用到Content-Type類型。2011-07-07PHP中在數(shù)據(jù)庫(kù)中保存Checkbox數(shù)據(jù)(1)
PHP中在數(shù)據(jù)庫(kù)中保存Checkbox數(shù)據(jù)(1)...2006-10-10簡(jiǎn)單設(shè)置IIS配置PHP調(diào)試環(huán)境
簡(jiǎn)單設(shè)置IIS配置PHP調(diào)試環(huán)境...2006-10-10php學(xué)習(xí)筆記(三)操作符與控制結(jié)構(gòu)
好久沒(méi)更新了,這段時(shí)間挺忙的。下面繼續(xù)php學(xué)習(xí) 之 操作符與控制結(jié)構(gòu);2011-08-08