php继承中方法重载(覆盖)的应用场合


Posted in PHP onFebruary 09, 2015

本文实例分析了php继承中方法重载(覆盖)的应用场合。分享给大家供大家参考。具体分析如下:

方法重载(override)/覆盖——在什么情况下使用:当父类知道所有的子类都需要用到一个方法,但父类不知道怎么去写这个方法时,就需要用到方法的重载。这时候,可以让子类去重写,来覆盖这个方法。

通俗实例——父类(动物)知道其子类(猫和狗)都会叫,但它们的叫法都不一样,所以父类没法去写这个方法,只能让子类(猫和狗)去定义。代码如下:

<?php
class Animal{
 public $name;
 protected $price;
 
 function cry(){
 echo "不知道动物怎么叫";
 }
}
class Dog extends Animal{
 function cry(){
 echo "汪汪...";
 }
}
class Pig extends Animal{
 function cry(){
 echo "哼哼..."
 }
}
?>

方法重载/覆盖的要点与细节(读起来有点呦口):

1、要求子类的方法,其方法名称、参数列表与父类方法一模一样。如例子中cry(),不能添加参数,改成cry($naaa)等。注意:这里并不要求参数名一样,只是要求参数的个数是一样的。
2、所谓的重载或覆盖,并不是将父类的方法覆盖。也可以这么理解:如果子类有调用该方法时,如果在自己类里找不到这个方法,那么它会去找父类里,看有没有这个方法。这也是多态的理解
3、如果子类里某个方法,要把父类里相同名称方法里的内容继承下来,可以使用 parent::方法名 或 父类名::方法名 继承。在子类定义的方法内使用。
4、访问权限问题,子类的访问范围>=父类的访问范围,即如果父类是protected function cry(),子类则只能是protected或public。

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
PHP Document 代码注释规范
Apr 13 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
php实现rc4加密算法代码
Apr 25 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
PHP 对象继承原理与简单用法示例
Apr 21 PHP
php抽象类使用要点与注意事项分析
Feb 09 #PHP
PHP中的socket_read和socket_recv区别详解
Feb 09 #PHP
支持png透明图片的php生成缩略图类分享
Feb 08 #PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 #PHP
php中get_object_vars()方法用法实例
Feb 08 #PHP
php面向对象中static静态属性与方法的内存位置分析
Feb 08 #PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 #PHP
You might like
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
进一步理解Python中的函数编程
2015/04/13 Python
Python通过正则表达式选取callback的方法
2015/07/18 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
厨房工作人员岗位职责
2013/11/15 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
房屋买卖协议样本
2014/11/16 职场文书
先进个人材料怎么写
2014/12/30 职场文书
《风筝》教学反思
2016/02/23 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android