final关键字的使用非常简单,在PHP中的最主要作用是定义不可重写的方法。什么叫不可重写的方法呢?就是子类继承后也不能重新再定义这个同名的方法。

class A {
final function testA(){
echo 'This is class A!', PHP_EOL;
}
} class childA extends A {
// Fatal error: Cannot override final method A::testA()
function testA(){
echo 'This is class childA', PHP_EOL;
}
}

而如果在类定义前加上这个关键字的话,则类也是不可继承的。

final class B {
function testB(){
echo 'This is class B!', PHP_EOL;
}
} // Fatal error: Class childB may not inherit from final class (B)
class childB extends B{ }

由此可见,final关键字就和他本身的意义一样,这个类或者方法是不可改变的。那么接口能不能用这个关键字呢?答案当然是否定的,接口的意义本身就是定义一个契约让实现类来实现,如果定义了final关键字,那么接口的意义就不存在了,所以从语言层面来说接口以及接口中的方法就不能使用final关键字。

interface C {
// Fatal error: Access type for interface method C::testC() must be omitted
final function testC();
}

在Java中,final还可以用来定义常量,但在PHP中,类常量是通过const来定义的。所以final定义不了变量。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/201912/source/final%E5%85%B3%E9%94%AE%E5%AD%97%E5%9C%A8PHP%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8.php

参考文档:

https://www.php.net/manual/zh/language.oop5.final.php

关注公众号:【硬核项目经理】获取最新文章

添加微信/QQ好友:【xiaoyuezigonggong/149844827】免费得PHP、项目管理学习资料

知乎、公众号、抖音、头条搜索【硬核项目经理】

B站ID:482780532

最新文章

  1. 从〇开始构架前端(NLDV框架)
  2. Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),
  3. mysql概要(九)字符集和校对集
  4. Excle中LOOKUP经典用法
  5. win8 telnet VirtualBox中的redhat9
  6. centos 下 搭建 php 环境
  7. Google地图
  8. Tomcat远程调试和加入JMS(转)
  9. oracle查询第一篇
  10. python接口自动化(六)--发送get请求接口(详解)
  11. mongodbwindows安装过程附带安装包百度云
  12. scrapy框架学习第一天
  13. sitecore系列教程之更改您的个人设置
  14. Toolbar 工具栏 菜单 标题栏 Menu
  15. Lua官方文档与源码分析
  16. 03.JMS深入
  17. New Concept English three(20)
  18. go 通过nginx代理后获取用户ip
  19. sql语句中变量的写法
  20. binlog监听工具-canal

热门文章

  1. filter,interceptor,controllerAdvice,aspect,controller执行顺序
  2. 把对象交给spring管理的3种方法及经典应用
  3. CNVD-2021-14536 锐捷 RG-UAC 统一上网行为管理审计系统信息泄露漏洞
  4. NOIP 模拟 $27\; \rm 牛半仙的妹子序列$
  5. COM笔记-Widows 注册表
  6. SpringCloud商品服务调用方式之Ribbon
  7. jQuery中的筛选(六):first()、last()、has()、is()、find()、siblings()等
  8. Java抽象类(abstract)
  9. 新东方集团K12公益免费课战役记
  10. Java 学习:数据类型