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 相关文章推荐
常用的php ADODB使用方法集锦
Mar 25 PHP
php 结果集的分页实现代码
Mar 10 PHP
JS 网站性能优化笔记
May 24 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
基于php下载文件的详解
Jun 02 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php删除数组中重复元素的方法
Dec 22 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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写的基于Memcache的Queue实现代码
2011/11/27 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
javascript开发中因空格引发的错误
2010/11/08 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
javascript实现循环广告条效果
2017/12/12 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
快速了解Python相对导入
2018/01/12 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
使用python接入微信聊天机器人
2020/03/31 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Django视图扩展类知识点详解
2019/10/25 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
销售自荐信
2013/10/22 职场文书
法警的竞聘演讲稿
2014/01/02 职场文书
大学生演讲稿范文
2014/01/11 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
刑事代理授权委托书
2014/09/17 职场文书
2015元旦节寄语
2014/12/08 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
MySQL优化之慢日志查询
2022/06/10 MySQL