php 之 Final 关键字

本来想写匿名类的=。=。。不过是php7才支持,相比大家可能版本一般不会那么高,所以我就不写了。

引用手册中的话:
PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

那么意思说如果有一个final修饰了一个方法,那么我们在继承的类里面就不能重写他,或者说覆盖他。那么我们依然继承了这个方法。我们看以下代码:

<?php
class BaseClass {public function test() {echo "use test\n";}final public function moreTesting() {echo "use moreTesting\n";}
}class ChildClass extends BaseClass {}$obj=new ChildClass();
$obj->moreTesting();?>

以上代码是手册里面的示例,我稍作修改了以下,让大家看起来爽一点,字不多。好了我们最后两句是新建childclass类,然后调用moreTesting方法,然而我们在基类BaseClass里面用final修饰了,那么我们将不能覆盖此方法,但是可以调用,我们运行一下发现将会输出:
use moreTesting
发现方法被成功调用,如果我们尝试修改以下呢?如下代码:

class ChildClass extends BaseClass {public function moreTesting() {echo "use moreTesting1111111\n";}
}

以上代码我们直接在childclass里面重写方法,或者说覆盖方法,结果运行将会报错:
PHP Fatal error: Cannot override final method BaseClass::moreTesting()

那我们现在来试一下用final修饰类:

final class  BaseClass {public function test() {echo "use test\n";}final public function moreTesting() {echo "use moreTesting\n";}
}

然后我们在此运行一下代码,然后将会出现
Fatal error: Class ChildClass may not inherit from final class
唔,那么这个final应该就理解差不多了吧=。=。。。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#链式编程

前言昨天我写了一段这样的一段代码。var email Email.From("1075094220qq.com").To("1075094220qq.com").CC("1075094220qq.com").Subject("邮件标题").Body("<h1 align\"center\">黑哥</h1><p>黑哥…

C#动态链接库的创建及使用

动态链接库( Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序…

用C++实现简单随机二元四则运算

让我们想看看二元四则运算都需要实现什么&#xff1a; &#xff08;1&#xff09; 定制题目数量 &#xff08;2&#xff09; 是否有乘除法 &#xff08;3&#xff09; 题目数值范围 &#xff08;4&#xff09; 加减有无负数 &#xff08;5&#xff09; 除法有无余数 &#xff0…

WireShark抓包之提示Alert Level: Fatal, Description: HandShake Failure

1 问题 ssl协议失败的方法,发了client hello包之后回复server hello包失败 2 分析 对比正常client hello的数据包, 我们点击Client Hello包看下详细信息,如下图 感觉ssl协议版本不对 然后我们修改了apache的配置,让代理服务

java地址映射关系,Spring MVC——基础(简介,使用,地址映射)

“大佬们”嘴中的SSH,SSM框架&#xff0c;我这种小白终于解除到第二个S了&#xff0c;关于Spring MVC框架&#xff0c;根据最近的学习发现&#xff0c;还是有很多不足和需要加强巩固的地方&#xff0c;所以&#xff0c;通过总结博客的方式将Spring MVC再次巩固学习一下。Spring…

scrapy爬取动态网页_scrapy_splash 设置随机请求头

本文为 霾大&#xff1a;scrapy_splash 爬取 js 加载网页初体验​zhuanlan.zhihu.com的补充在上面的文章中我们仅仅是初步完成了 scrapy_splash 的简单使用接下来我们将介绍如何是使得 splash 在 render.html &#xff08;默认&#xff09;访问网页时也能动态调整其请求头等&am…

机器学习模型开发必读:开源数据库最全盘点

开发 AI 和机器学习系统从来没有像现在这样方便。类似于 TensorFlow、Torch 和 Spark 这样的开源工具&#xff0c;在 AI 开发者群体中已是无处不在。再加上亚马逊 AWS、Google Cloud 等云服务带来的海量计算能力&#xff0c;将来使用笔记本电脑来训练 ML 模型或许不再难以想象。…

离散数学4

离散数学4&#xff1a;析取范式与合取范式 命题公式的两种规范表示方法&#xff0c;能表达真值表所能提供的一切信息。 命题变项及其否定统称作文字。仅由有限个文字构成的析取式叫简单析取式&#xff0c;仅由有限个文字构成的合取式叫简单合取式。 &#xff08;析取式就是由∨…

linux c之遍历字符串数组

1 问题 比如我们要遍历字符串数组&#xff0c;我们的思路一般是先求字符串数组的长度&#xff0c;然后再用for循环便利&#xff0c;其实没必要这样&#xff0c;我们直接在 字符串数组后面加上个NULL就行再去遍历 2 代码实现 #include <stdio.h>int main() {static con…

php之clone 复制对象以及__clone魔术方法

如果错误和不足请给予指出&#xff0c;谢谢~ (⊙&#xff3f;⊙) 在开始使用clone之前我们下先看以下一个小例子&#xff1a; <?php //首先定义一个test一个类 class Testclass {//成员变量是$value1public $value1; } //随后new一个obj1 $obj1 new Testclass(); //复…

java语言中的浮点型数据分为,Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou...

Java语言中的浮点型数据根据数据存储长度和数值精度的不同&#xff0c;进一步分为float型和double型&#xff0c;其中dou更多相关问题【单选题】下列因素中不是经济中内在稳定器的是【单选题】外在时滞是以下哪两者之间的时间&#xff1a;【单选题】当经济中存在失业时&#xf…

python查看图片的源代码_python实现图片筛选程序

今天因工作需要写了个小程序&#xff0c;用于在图片集中自动抽取需要的照片。该程序只是实现了基本功能&#xff0c;还有很多需要完善的地方&#xff0c;展示出来算是给自己鼓鼓气吧。该程序应用有一定特殊条件&#xff0c;因我选择的图片集是工业生产过程中自动拍摄生成的&…

C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果

很酷的效果&#xff0c;很值得好好去学习的哈。 重置工具箱&#xff1a; 新建一个WinForm程序,项目名称为TestDockPanelControl。选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--->>右键--->>选择项--->>浏览--- >>weiFenLuo.…

使用aspnetcore前后端分离开发,你一定要知道这个。

前言用过Vue单页面应用开发的&#xff0c;一定都知道Vue-router这个路由组件&#xff0c;它支持hash和history两种模式。HTML5 History 模式vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL&#xff0c;于是当 URL 改变时&#xff0c;页面不会重新加载。…

Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结

Atitit. 木马病毒的外部class自动加载机制------加载class的方法总结 Atitit.java load class methods 1. 动态加载jar文件和class文件。 1 2. 使用Class静态方法 Class.forName 1 2.1. 使用ClassLoader 1 2.2. 3. 直接new 2 3. Ref 2 1. 动态加载jar文件和class文件。 完成…

剑指offer之找到链表里面包含环的入口节点

1 问题 剑指offer之找到链表里面包含环的入口节点&#xff0c;比如 // node7<-node6 <-node5// | |//head->node1->node2->node3->node4 环的入口节点是node2 2 代码实现 #include <stdio.h> #include <s…

Visual Studio 2015专业版创建Win32控制台应用程序,C,C++源文件

原配的Visual Studio 2015专业版不像之前的版本,在新建项目里面是找不到Win32模板的,那么怎么才能新建Win32项目和Win32控制台应用程序呢?今天我就带大家做一简单介绍。 先看如下图所示: 解决: 1、添加的办法是点击上图所示的新建项目界面的Visual C++下面的Windows,再…

php 序列化对象

习惯性借用手册里面的介绍&#xff1a; 所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。序列化一个对象将会保存对象的所有变量&#xff0c;但是不会保存对象的方法&#xff0c;只会保存类…

php html标签自定义属性,详解H5的自定义属性data-*

HTML5 增加了一项新功能是 自定义数据属性 &#xff0c;也就是 data-* 自定义属性。在HTML5中我们可以使用以 data- 为前缀来设置我们需要的自定义属性&#xff0c;来进行一些数据的存放当然高级浏览器下可通过脚本进行定义和数据存取。在项目实践中非常有用。例如&#xff1a;…

cdoj 1131 男神的礼物 区间dp

男神的礼物 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1131 Description Lweb学长是集训队里公认的男神。有一天他要给美美的学姐姐准备礼物。Lweb学长可是会魔法的哟。为了准备一份礼物&#xff0c;男神要加工n份材料。每一次…