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 相关文章推荐
SMARTY学习手记
Jan 04 PHP
中英文字符串翻转函数
Dec 09 PHP
基于php 随机数的深入理解
Jun 05 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
PHP生成条形图的方法
Dec 10 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
10个php函数实用却不常见
Oct 13 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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多用户计数器代码
2007/03/11 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
python 决策树算法的实现
2020/10/09 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
会计员岗位职责
2014/03/15 职场文书
公务员年度个人总结
2015/02/12 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
php字符串倒叙
2021/04/01 PHP
Navicat连接MySQL错误描述分析
2021/06/02 MySQL