PHP的重写和重载

  重写

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

  

PHP的重写和重载

  下级的可见性应该不低于上级的可见性。

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

  私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已。不过方法的参数必须一致。

  构造方法不但可以像其他普通方法一样重写,而且,比普通方法更宽松:重写的时候参数可以不一致。

  重载

  php中的重载,是另一个“概念”,其指的是:

  属性重载:如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据;

  方法重载:如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为;

  属性重载:

  属性有哪些使用情形?其实跟变量一样,只有4种使用情形:

  取值:$v1 = 对象->属性;

  赋值:对象->属性 = XX值;

  判断是否存在:isset(对象->属性;)

  销毁:unset(对象->属性;)

  所谓属性重载,就是在面对上述4种情形的属性使用场景中,该对象如何来“应对”的问题。

  如果某属性不存在,但在语法中使用如下情形,则会发生:

  取值:$v1 = 对象->属性; ===>自动调用类中的__get()方法

  赋值:对象->属性 = XX值; ===>自动调用类中的__set()方法

  判断是否存在:isset(对象->属性;) ===>自动调用类中的__isset()方法

  销毁:unset(对象->属性;) ===>自动调用类中的__unset()方法

  前提都是:类中要预先定义好这些方法。

  方法重载:

  当使用一个对象调用一个不存在的普通方法的时候,会自动去调用预先定义好的"__call"方法。

  

PHP的重写和重载

  当使用一个对象(类)调用一个不存在的静态方法的时候,会自动去调用预先定义好的"__callStatic"方法。其中,该方法必须带2个参数。和__call一样。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值