2016 - 2024

感恩一路有你

PHP 类覆盖(Override)重写和最终类、最终方法

浏览量:2120 时间:2024-07-03 09:22:58 作者:采采

1. 含义: 一个子类继承了父类的特征信息(私有的继承不了),但又自己来重新定义父类继承给自己的特征信息,这种现象就称为"覆盖"(重写)——override。

示例一: 子类使用父类的显示信息方法

2. 先考察一个下级使用上级类显示信息而不"完全"的例子:

示例二: 子类重写父类的显示信息方法

3. 于是,我们在子类中,"亲自"来定义一个显示信息的方法,该方法跟父类的方法同名:(同名的目的可以认为"做同样的事情"):

重写的基本要求

4. 该代码明显有2行是跟父类的同名方法所做的事情是一样的,则改进如下:

- 访问控制权限: 下级类重写上级类的同名属性或方法时,所使用的访问控制修饰符"不能更狭小",即:

- 上级是 public,下级只能是 public

- 上级是 protected,下级只能是 protected 和 public

- 上级是 private,下级: 此时覆盖不了

- 方法覆盖时,下级方法的参数要求跟上级方法的参数"一致"

- 特例: 构造方法也可以重写,但此时不要求参数一致

- 私有属性和私有方法的重写问题:

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

PHP 中的最终类和最终方法

父类中被 final 修饰的类或方法,是不能被子类所覆盖的。也就是说,这些被 final 修饰的类或方法是"最终的",子类无法对其进行重写。

综上所述,PHP 中类的覆盖重写以及最终类、最终方法的概念对于面向对象编程有着重要的意义。合理地使用这些特性可以让程序更加灵活、可扩展和安全。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。