如果父類中的方法被聲明為 final,則子類無(wú)法覆蓋該方法。如果一個(gè)類被聲明為 final,則不能被繼承。
Final 方法示例:
<?php
class BaseClass {
public function test() {
echo "BaseClass::test() called\n";
}
final public function moreTesting() {
echo "BaseClass::moreTesting() called\n";
}
}
class ChildClass extends BaseClass {
public function moreTesting() {
echo "ChildClass::moreTesting() called\n";
}
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>
Final 類示例:
<?php
final class BaseClass {
public function test() {
echo "BaseClass::test() called\n";
}
// 這里無(wú)論你是否將方法聲明為final,都沒(méi)有關(guān)系
final public function moreTesting() {
echo "BaseClass::moreTesting() called\n";
}
}
class ChildClass extends BaseClass {
}
// 產(chǎn)生 Fatal error: Class ChildClass may not inherit from final class (BaseClass)
?>
注意:
屬性不能被定義為 final,只有類和方法才能被定義為 final。