php构造方法之析构方法在继承中的表现
2016-04-12 13:21
465 查看
构造方法析构方法在继承中的表现
子类中没有定义构造方法时,会自动调用父类的构造方法。因此实例化子类时,需按照父类的构造方法的形式进行。修改为:
子类定义了自己的构造方法,则不会自动调用父类的构造方法,但可以手动调用:parent::__construct();
但通常,在子类,很多时候,在构造方法中,都应该(需要)去调用父类的构造方法以节省代码,增加可读性:
子类中没有定义析构方法时,会自动调用父类的析构方法。
子类定义了自己的析构方法,则不会自动调用父类的析构方法,但可以手动调用:parent::__destruct()。
重写override
重写又叫覆盖,就是将从父类继承下来的属性或方法重新“定义”——就是从新写。但注意:子类覆盖父类的方法,虽然可以去调用父类的同名方法去完成一定的工作,但不是必须的。也有可能父类的该方法所执行的结果并不适合子类,此时子类就去完全自己写了。
重写的基本要求:
访问控制权限:
下级的访问控制权限应该不低于上级的访问控制权限:
上级:public 下级:只能public
上级:protected 下级: protected, public
上级:private 下级:private protected public——实际此情况无意义。
私有的不能覆盖,而是完全当作自己全新的。
方法的参数形式:
应该跟父类的一致。
私有属性和私有方法的重写问题:私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已。不过方法的参数必须一致。
构造方法的重写问题:构造方法不但可以像其他普通方法一样重写,而且,比普通方法更宽松:重写的时候参数可以不一致。
最终类final class:
通常,一个类,没有特别声明的话,则“别人”就可以随意拿过来使用并对之进行“扩展”——继承。但是:
如果某个类不希望对其进行扩展,则可以将其声明为“最终类”。
形式:
final class 类名{ 。。。。类定义。。。。}
最终方法final method
通常,一个方法,如果没有特别声明,则下级类就可以对其进行“覆盖”(重写)。但是:
如果某个方法不希望被下级类覆盖,就可以对其生命为“最终方法”。
形式:
final function 方法名(){。。。。方法定义。。。。}
相关文章推荐
- IIS7.5 配置 PHP 5.3.5
- PHP常量详解:define和const的区别
- php 利用scws实现mysql全文搜索功能
- 可视化——matploblib 解决中文显示的问题
- PHP unicode 与 utf-8 转码,还是很有意思的
- 一份简短的关于 PHP 容易混淆知识点的实用指南
- 单例模式的数据库连接和PHP实现页面静态化的第一种方法
- Thinkphp控制volist的循环次数,限制只显示部分数据
- php通过Mysqli和PDO连接mysql数据详解
- PHP递归生成树形数组
- PHP中Restful api 错误提示返回值实现思路
- OutputFormat输出过程的学习
- php代码与表格元素的结合
- PHP给文字内容中的关键字进行套红处理
- PHP编码规范
- mac上调整phpstorm和webstorm的使用内存(默认是128m-750m) 避免卡顿
- PHP版本升级5.4手记
- thinkphp: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
- php 万年日历
- thinkphp学习记录