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 相关文章推荐
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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为php增加openssl模块的方法
2011/06/14 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php实现websocket实时消息推送
2018/03/30 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
JavaScript中合并数组的N种方法
2014/09/16 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python列表(list)常用操作方法小结
2015/02/02 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python实现自动发送邮件
2018/06/20 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
迎新晚会主持词
2014/03/24 职场文书
师范生求职信
2014/06/14 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
第一节英语课开场白
2015/06/01 职场文书
股权投资协议书
2016/03/23 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android