final的中文意思是“最后的,最终的”,可以修饰类或者方法。
1)不希望父类的某个方法被子类重载(override)时,可以用final关键字修饰
2)不希望类被继承时,可以用final修饰
格式:
final class 类名{
}
class 类名{
final 修饰符 function 函数名(参数列表){}
}
1、如果希望某个类不被其它的类来继承,可以使用final
例:
final class A{
}
class B extends A{ //将会报错
}
echo "ok";
?>
2、如果希望某个方法不被任何子类重写,比如计算个人所得税的方法,可以使用final来修饰该方法。
class A{
final public function getRate($salary){
return $salary*0.08;
}
}
class B extends A{
public function getRate($salary){
return $salary*0.01;
}
}
$b=new B();
echo $b->getRate(2000); //运行时会报错,因为父类A中的getRate()使用final修饰,无法在子类中重写
?>
3、被final修饰的方法,可以被子类继承,但无法被子类重写
例:
class A{
final public function getRate($salary){
return $salary*0.08;
}
}
class B extends A{
/*public function getRate($salary){
return $salary*0.01;
}*/
}
$b=new B();
echo $b->getRate(2000); //输出 160
?>
4、final关键字不能修饰属性(变量)
URL: http://www.bianceng.cn/webkf/PHP/201612/50493.htm
