final关键字在PHP中的使用

final关键字在PHP中的使用

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

(0)

相关推荐

  • 在PHP中灵活使用foreach+list处理多维数组

    先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如: $arr = [ [1, 2, [3, 4]], [5, 6, [7, 8]],]; 我们需要的结果是元素1变成1, ...

  • 标梵学习PHP的压缩工具扩展包

    PHP的zip压缩工具扩展包学习 总算到了 PHP 的拿手好戏上场了,前面我们学习过 Bzip2 . LZF . Phar 和 rar 这些压缩相关扩展在 PHP 中的使用,不过它们要么是太冷门,要么 ...

  • 彻底搞明白PHP中的include和require

    在PHP中,有两种包含外部文件的方式,分别是include和require.他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别的错误,程序停止运行 ...

  • PHP中命名空间是怎样的存在(一)?

    命名空间其实早在PHP5.3就已经出现了.不过大部分同学可能在各种框架的使用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些能够快速产出的框架.这次我们不从框架的角度,仅从简单的代码角度来 ...

  • [PHP小课堂]final关键字在PHP中的使用

    [PHP小课堂]final关键字在PHP中的使用 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[xiaoyuezigonggong/149844827]免费得PHP.项目管理学习资料 ...

  • java中final关键字的作用

    final关键字可以用于三个地方.用于修饰类.类属性和类方法. 被final关键字修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖(重写): 对于被final关键字修饰的类属性而言 ...

  • 深入理解 Java 中的 final 关键字

    final 是Java 中重要关键字之一,可以应用于类.方法以及变量上.这篇文章中将讲解什么是 final 关键字?将变量.方法和类声明为 final 代表了什么?使用 final 的好处是什么? f ...

  • 关于java中final关键字与线程安全性

    翻译自http://www.javamex.com/tutorials/synchronization_final.shtml 在Java5中,final关键字是非常重要而事实上却经常被忽视其作为同步 ...

  • final关键字

    根据上下文环境,Java 的关键字 final 的含义有些微的不同,但通常它指的是"这是不能被改变的".防止改变有两个原因:设计或效率.因为这两个原因相差很远,所以有可能误用关键字 ...

  • use关键字在PHP中的几种用法

    use关键字在PHP中的几种用法 在学习了和使用了这么多年的PHP之后,您知道use这个关键字在PHP中都有哪些用法吗?今天我们就来看一下它的三种常见用法. 1. 用于命名空间的别名引用 // 命名空 ...

  • [PHP小课堂]use关键字在PHP中的几种用法

    [PHP小课堂]use关键字在PHP中的几种用法 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[xiaoyuezigonggong/149844827]免费得PHP.项目管理学习资料 ...

  • 23 final关键字(完结器)

    23 final关键字(完结器) 本质 不可以被修改--------定义的都是最终版本 //记住final和abstract是死对头,不能同时出现在一个类或一个方法上 常规用法 1.修饰类(无法被继承 ...

  • [Android]【安卓】【Java】final关键字

    [Android][安卓][Java]final关键字 ME: 1.final修饰的类:不可被继承. 2.final修饰的方法:不可被重写. 3.final修饰的变量:初始化后的值不可改变.成员变量和 ...