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程序员最常犯的11个MySQL错误小结
Nov 20 PHP
flash用php连接数据库的代码
Apr 21 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
laravel学习教程之关联模型
Jul 30 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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防注入安全代码
2008/04/09 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
JS控制TreeView的结点选择
2016/11/11 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
分享6个隐藏的python功能
2017/12/07 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
Python爬取某平台短视频的方法
2021/02/08 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
傲盾软件面试题
2015/08/17 面试题
linux面试相关问题
2012/08/11 面试题
测试驱动开发的主要步骤是什么
2014/12/10 面试题
出国导师推荐信
2014/01/16 职场文书
初三新学期计划书
2014/05/03 职场文书
工作检讨书怎么写
2014/10/10 职场文书
劳资员岗位职责
2015/02/13 职场文书
教师病假条范文
2015/08/17 职场文书