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 相关文章推荐
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
php微信开发自定义菜单
Aug 27 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 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
js二级地域选择的实现方法
2013/06/17 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python创建进程fork用法
2015/06/04 Python
python中reload(module)的用法示例详解
2017/09/15 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python十进制转二进制的详解
2020/02/07 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
护士在校生自荐信
2014/02/01 职场文书
元旦晚会主持词
2014/03/24 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
父亲节活动总结
2015/02/12 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
golang中的空slice案例
2021/04/27 Golang
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL