PHP final关键字的用法(附带实例)
在 PHP 程序中,面向对象中的继承使类和类成员变得非常灵活,但有时不希望类和类成员在使用的过程中变化,可以在这些内容前面添加 final 关键字,表示这些内容不能被修改。
使用 final 关键字修饰类和类成员的基本语法格式如下:
下面演示 final 关键字的使用,具体代码如下:
运行程序后会报错,第 10 行代码的错误信息是:
第 11 行代码的错误信息是
如果给上述第 1 行代码添加 final 关键字,表示 Person 类是最终类,运行程序后,会提示 Student 类不能继承 Person 最终类的错误信息。
使用 final 关键字修饰类和类成员的基本语法格式如下:
final class 类名 // 最终类 { final public const 常量名 = 常量值; // 最终常量 final public function 方法名(){} // 最终方法 }在上述语法格式中:
- 使用 final 关键字修饰的类,表示该类不能被继承,只能被实例化,这样的类被称为最终类;
- 使用 final 关键字修饰的常量,表示该类的子类不能重写这个常量,这样的常量被称为最终常量;
- 使用 final 关键字修饰的方法,表示该类的子类不能重写这个方法,这样的方法被称为最终方法。
下面演示 final 关键字的使用,具体代码如下:
class Person { final public const AGE = 18; // 最终常量 final public function show() // 最终方法 { } } class Student extends Person { public const AGE = 20; // 报错 public function show() // 报错 { } }在上述代码中:
- 第 1~7 行代码定义 Person 类,第 3 行代码定义最终常量 AGE,第 4~6 行代码定义最终方法 show();
- 第 8~14 行代码定义 Student 类继承 Person 类,第 10 行代码重写常量 AGE,第 11 行代码重写 show() 方法。
运行程序后会报错,第 10 行代码的错误信息是:
Fatal error: Student::AGE cannot override final constant Person::AGE in…表示不能重写 Person 类的最终常量。
第 11 行代码的错误信息是
Fatal error: Cannot override final method Person::show() in…表示不能重写 Person 类的最终方法。
如果给上述第 1 行代码添加 final 关键字,表示 Person 类是最终类,运行程序后,会提示 Student 类不能继承 Person 最终类的错误信息。