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将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
php数据访问之查询关键字
May 09 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP count_chars()函数讲解
Feb 14 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
Laravel配合jwt使用的方法实例
Oct 25 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP:风雨欲来 路在何方?
2006/10/09 PHP
PHP设计聊天室步步通
2006/10/09 PHP
php htmlspecialchars加强版
2010/02/16 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
php中static和const关键字用法分析
2016/12/07 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
python计算时间差的方法
2015/05/20 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
建筑安全生产目标责任书
2014/07/23 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
健康证明
2015/06/19 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
python 统计代码耗时的几种方法分享
2021/04/02 Python
Golang 实现超大文件读取的两种方法
2021/04/27 Golang