在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载。单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法重写。

子类中重载父类的方法就是在子类中覆盖从父类中继承过来的方法,父类中的方法被子类继承过来不就可以直接使用吗?为什么还要重载呢?因为有一些情况我们必须要覆盖的。例如,有一个“鸟”类,在这个类中定义了鸟的通用方法“飞翔”。将“鸵鸟”类作为它的子类,就会将“飞翔”的方法继承过来,但只要一调用“鸵鸟”类中的这个“飞翔”的方法,鸵鸟就会飞走。虽然鸵鸟是不会飞的,但其他特性都具有“鸟类”的特性,所以在声明“鸵鸟”类时还是可以继承“鸟”类的,但必须在“鸵鸟”类中将“鸟”类中继承过来的“飞翔”方法改写,就需要在子类中重载父类中的方法。

在下面的例子中,声明的Person类中有一个“说话”方法,Student类继承Person类后可以直接使用“说话”方法。但Person类中的“说话”方法只能说出它自己的成员属性,而Student类对Person类进行了扩展,多添加了几个新的成员属性。代码如下所示:

改程序运行后输出的结果为:

我的名字叫:张三,性别:男,我的年龄是:20,在edu学校上学

在PHP中,提供了在子类重载的方法中调用父类被覆盖方法的功能。这样就可以在子类重写的方法中,继续使用从父类继承过来并被覆盖的方法,然后再按要求多添加一些新功能。调用的格式是使用“parent:方法名”在子类的重载方法中调用父类中被覆盖的方法。将上例中的代码修改一下,在子类重写的构造方法中使用“parent::__construct()”调用父类中被覆盖的构造方法,再多添加一条对子类中新扩展的成员属性初始化的代码。在子类中重写的say()方法中使用“parent::say()”调用父类中被覆盖的say()方法,再添加上输出子类成员属性的功能。

代码如下所示:

上面的例子输出的结果和前一个例子是一样的,但在本例中通过在子类中直接调用父类中被覆盖的方法要简便很多。另外,在子类覆盖父类的方法时一定要注意,在子类中重写的方法访问权限一定不能低于父类被覆盖的方法的访问权限。例如,如果父类中的访问权限是protected,那么在子类中重写的方法的权限就要是protected或public。

以上内容是小编给大家介绍的PHP中子类重载父类的方法【parent::方法名】的相关内容,希望对大家有所帮助!如果大家想了解更多资讯,敬请关注服务器之家网站!

php 中如何重载父类的方法_PHP中子类重载父类的方法【parent::方法名】相关推荐

  1. 【Python】继承、父类、子类、方法重写、子类调用父类方法、super()函数、多继承

    Python继承 2021/6/21 周一 学习内容:父类.子类.方法重写.子类调用父类方法.super()函数.多继承 Python入门,主要是看 菜鸟教程.w3school 网站,以及电子工业出版 ...

  2. java如何调用父类的实例对象_java子类调用父类的方法中包含子类重写的实例方法...

    java子类调用父类的方法中包含子类重写的实例方法 # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了 # 先看代码: public class Common { public static ...

  3. python子类继承父类属性实例_Python实现子类调用父类的初始化实例

    前言 python中进行面向对象编程,当在子类的实例中调用父类的属性时,由于子类的__init__方法重写了父类的__init__方法,如果在子类中这些属性未经过初始化,使用时就会出错. 例如以下的代 ...

  4. 父类为模板类,子类继承父类调用父类的方法常见错误

    相信大家都对继承很清楚,那么如果是父类为模板类,派生出来的子类创建的对象,具体实现要如何调用父类的方法呢? 我们用代码尝试一下 #include<iostream> #include< ...

  5. mysql屏蔽关键字实现方法_PHP屏蔽过滤指定关键字的方法

    本文实例讲述了PHP屏蔽过滤指定关键字的方法.分享给大家供大家参考.具体分析如下: 实现思路: 一.把关键字专门写在一个文本文件里,每行一个,数量不限,有多少写多少. 二.PHP读取关键字文本,存入一 ...

  6. mysql row函数的使用方法_php row()函数介绍与使用方法详解

    react-router作为react框架路由解决方案在react项目中举足轻重.本文主要介绍了详解react-router 4.0 下服务器如何配合BrowserRouter,小编觉得挺不错的,现在 ...

  7. java 父类构造函数_Java基础系列 - 子类继承父类,调用父类的构造函数

    package com.test7; public class test7 { public static void main(String[] args) { Son son = new Son(1 ...

  8. C# 继承实现父类方法、重写、重载

    继承是派生类(子类)去实现(重写<override>.重构<new>)基类(父类)的方法或属性.从而获取在派生类中要实现的功能. 子类调用父类构造方法,在父类中有个实现姓名和年 ...

  9. Java中子类覆盖父类方法所必须满足的条件

    因为太喜欢,所以转来,侵删! 参考自:http://www.it165.net/pro/html/201504/39284.html 一.描述 子类重写(覆盖)父类的方法必须满足的条件: 1.父类中的 ...

最新文章

  1. 中国经济是前所未有二元经济(转)
  2. 继承QTreeWidgetItem发生error: 'staticMetaObject' is not a member of 'QTreeWidgetItem' 错误
  3. ecshop商品详细描述调用商品相册代码
  4. Android中的常见布局
  5. 邮件:事务失败。 服务器响应为:DT:SPM 163 smtp
  6. HttpHandler应用之 防止图片盗链
  7. Tomcat Connector
  8. 空间滤波_空间频率 、 光波方向 与 空间滤波 4f系统
  9. php的五大,PHP 7的五大效能
  10. linux grub内核选择,UBUNTU GRUB没有内核选项,怎么回事啊?
  11. access字段类型varchar_Access SQL语句创建表对应的数据类型名称
  12. JAVA程序设计(学堂在线-清华大学) 课后练习题 已更新完毕
  13. 学习Android studio 个人总结小经验
  14. 末日的传说 洛谷p1338
  15. adjacent cache line prefetch
  16. 查看服务器上Docker镜像 latest具体版本
  17. 【历史上的今天】11 月 26 日:中国移动的第1亿个用户;Microsoft 确立名字;控制论鼻祖出生
  18. 微信内测新功能(深度清理),瞬间释放几个G内存!
  19. 科研写作——常见句式(二)
  20. 1 - 基于卡方检验的特征选择

热门文章

  1. Scheme N皇后
  2. phpMyAdmin 安装错误解决方法
  3. [MySQL FAQ]系列 -- 快速还原MyISAM表索引
  4. 即将从TechReady5归来
  5. Embeded linux之移植iptables
  6. 转载 调用xvid 实现解码
  7. make: 警告:检测到时钟错误。您的创建可能是不完整的。
  8. ABB机器人之LOADDATA
  9. 纠错——【Singleton array array(0.2) cannot be considered a valid collection.】
  10. spark 2.4安装