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