PHP 面向对象基础:Final 关键词 1 个改进

什么是 final 关键词?

如果父类中的方法被声明为 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)

finalabstract 不能同时声明一个类

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() {}
}
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!