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基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
解析strtr函数的效率问题
Jun 26 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php实现的SESSION类
2014/12/02 PHP
PHP速成大法
2015/01/30 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
input 高级限制级用法
2009/03/26 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
React Native实现地址挑选器功能
2017/10/24 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
JsChart组件使用详解
2018/03/04 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
python中函数传参详解
2016/07/03 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python unichr函数知识点总结
2020/12/16 Python
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
初中生学习的自我评价
2013/11/14 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
邀请书模板
2015/02/02 职场文书
农村党支部承诺书
2015/04/30 职场文书
狂人日记读书笔记
2015/06/30 职场文书
信息简报范文
2015/07/21 职场文书