PHP final 关键字

PHP final


在 PHP5 中新增加了 final 关键字,它可以在类或类中成员方法前使用,但是不能用来修饰成员属性。final 的中文含义是最终的、最后的,所以使用 final 修饰的类可以称为“最终类”,使用 final 修饰的成员方法可以称为“最终方法”。


语法

其语法格式如下:

final class 类名{                   // 最终类
    ... ... ;
}
final function 方法名(){       // 最终方法
    ... ... ;
}

final 关键字的作用如下:

  • 使用 final 修饰的类,不能被继承;
  • 类中使用 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";
   }
   
   // 这里无论你是否将方法声明为final,都没有关系
   final public function moreTesting() {
       echo "BaseClass::moreTesting() called\n";
   }
}

class ChildClass extends BaseClass {
}
// 产生 Fatal error: Class ChildClass may not inherit from final class (BaseClass)
?>

注意: 属性不能被定义为 final,只有类和方法才能被定义为 final。

查看笔记

扫码一下
查看教程更方便