php构造方法中析构方法在继承中的表现


Posted in PHP onApril 12, 2016

本文为大家分享了php构造方法之析构方法在继承中的表现,供大家参考,具体内容如下

子类中没有定义构造方法时,会自动调用父类的构造方法。因此实例化子类时,需按照父类的构造方法的形式进行。

php构造方法中析构方法在继承中的表现

修改为:

php构造方法中析构方法在继承中的表现

子类定义了自己的构造方法,则不会自动调用父类的构造方法,但可以手动调用:parent::__construct();php构造方法中析构方法在继承中的表现

但通常,在子类,很多时候,在构造方法中,都应该(需要)去调用父类的构造方法以节省代码,增加可读性:

php构造方法中析构方法在继承中的表现

子类中没有定义析构方法时,会自动调用父类的析构方法。子类定义了自己的析构方法,则不会自动调用父类的析构方法,但可以手动调用:parent::__destruct()。重写override

重写又叫覆盖,就是将从父类继承下来的属性或方法重新“定义”——就是从新写。

php构造方法中析构方法在继承中的表现

但注意:子类覆盖父类的方法,虽然可以去调用父类的同名方法去完成一定的工作,但不是必须的。也有可能父类的该方法所执行的结果并不适合子类,此时子类就去完全自己写了。

重写的基本要求:

访问控制权限:下级的访问控制权限应该不低于上级的访问控制权限:上级:public 下级:只能public上级:protected 下级: protected, public上级:private 下级:private protected public——实际此情况无意义。私有的不能覆盖,而是完全当作自己全新的。

方法的参数形式:应该跟父类的一致。

php构造方法中析构方法在继承中的表现

php构造方法中析构方法在继承中的表现

私有属性和私有方法的重写问题:私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已。不过方法的参数必须一致。构造方法的重写问题:构造方法不但可以像其他普通方法一样重写,而且,比普通方法更宽松:重写的时候参数可以不一致。

php构造方法中析构方法在继承中的表现

最终类final class:

通常,一个类,没有特别声明的话,则“别人”就可以随意拿过来使用并对之进行“扩展”——继承。

但是:

如果某个类不希望对其进行扩展,则可以将其声明为“最终类”。

形式:

final class 类名{ 。。。。类定义。。。。}

最终方法final method

通常,一个方法,如果没有特别声明,则下级类就可以对其进行“覆盖”(重写)。

但是:

如果某个方法不希望被下级类覆盖,就可以对其生命为“最终方法”。

形式:

final function 方法名(){。。。。方法定义。。。。}

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
随机广告显示(PHP函数)
Oct 09 PHP
php中常用编辑器推荐
Jan 02 PHP
PHP中使用BigMap实例
Mar 30 PHP
php阳历转农历优化版
Aug 08 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP实现图片压缩
Sep 09 PHP
yii2 上传图片的示例代码
Nov 02 PHP
YII框架常用技巧总结
Apr 27 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 #PHP
ThinkPHP框架里隐藏index.php
Apr 12 #PHP
PHP 绘制网站登录首页图片验证码
Apr 12 #PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 #PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 #PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 #PHP
PHP实现的浏览器检查类
Apr 11 #PHP
You might like
php设计模式 Strategy(策略模式)
2011/06/26 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
简单了解python PEP的一些知识
2019/07/13 Python
Python求凸包及多边形面积教程
2020/04/12 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
个人培训自我鉴定
2014/03/28 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
如何正确理解python装饰器
2021/06/15 Python
nginx设置资源请求目录的方式详解
2022/05/30 Servers