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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
PHP语法速查表
Jan 02 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
php计算title标题相似比的方法
Jul 29 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 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批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python简单实现enum功能的方法
2016/04/25 Python
Python程序中设置HTTP代理
2016/11/06 Python
python正则表达式的使用
2017/06/12 Python
python3设计模式之简单工厂模式
2017/10/17 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
中软国际Java程序员笔试题
2014/07/19 面试题
宝宝周岁宴答谢词
2014/01/26 职场文书
质量整改报告范文
2014/11/08 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
三八节活动简报
2015/07/20 职场文书
党章学习心得体会2016
2016/01/14 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript