PHP final:最终类和最终方法
在 PHP5 中新增加了 final 关键字,它可以在类或类中成员方法前使用,但是不能用来修饰成员属性。final 的中文含义是最终的、最后的,所以使用 final 修饰的类可以称为“最终类”,使用 final 修饰的成员方法可以称为“最终方法”。其语法格式如下:
如果某个类不想被继承,那么就可以使用 final 来修饰这个类。使用 final 修饰的类不能有子类,也就不能对它进行拓展。如果想要继承一个使用 final 修饰的类,程序将会报错,如下所示:
final class 类名{ // 最终类
... ... ;
}
final function 方法名(){ // 最终方法
... ... ;
}
- 使用 final 修饰的类,不能被继承;
- 类中使用 final 修饰的成员方法,在子类中不能覆盖(重写)该方法。
如果某个类不想被继承,那么就可以使用 final 来修饰这个类。使用 final 修饰的类不能有子类,也就不能对它进行拓展。如果想要继承一个使用 final 修饰的类,程序将会报错,如下所示:
<?php final class DemoClass{ } class DemoClass2 extends DemoClass{ } ?>报错信息如下所示:
Fatal error: Class DemoClass2 may not inherit from final class (DemoClass) in ... ...
如果类中的某个方法已经很完善了,不需要再被重写,那么就可以使用 final 来修饰这个方法。如果在子类中试图重写这个使用 final 修饰的方法,程序同样会出现错误,如下所示:<?php class DemoClass{ final public function say(){ echo '新宝库'; } } class DemoClass2 extends DemoClass{ public function say(){ echo 'https://www.xinbaoku.com/php/'; } } ?>报错信息如下所示:
Fatal error: Cannot override final method DemoClass::say() in ... ...
提示:final 关键字应该放在其它修饰词(例如 public、static 等)之前使用。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算