PHP 面向对象基础:Final 关键词
什么是 final
关键词?
如果不想父类方法被重写,可以将父类方法声明为 final
class MyTest
{
final public function test()
{
echo "Testing in parents class" . "<br />";
}
}
子类不能重写父类方法
class OneTest extends MyTest
{
public function test()
{
echo "Testing in child class" . "<br />";
}
}
// Fatal error: Cannot override final method MyTest::test()
如果父类被声明为 final
final class MyTest
{
public function test()
{
echo "Testing in parents class" . "<br />";
}
}
子类无法继承
class OneTest extends MyTest {}
// Fatal error: Class OneTest may not inherit from final class (MyTest)
final abstract class MyTest
{
public function test()
{
echo "Testing in parents class" . "<br />";
}
}
// Fatal error: Cannot use the final modifier on an abstract class
final 须在访问修饰符之前声明
class MyTest
{
final public function test() {}
final protected function run() {}
final private function deploy() {}
}