PHP重写和重载
发布时间:2021-10-21
沉默小管-技术博客
PHP重写和重载
525
1
原文地址:
https://www.php-china.com//detail/19
H1
H2
H3
H4
H5
H6
<p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">Php</span><span style="line-height:1;">中重写和重载的区别</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;line-height:1;">一. </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">重写</span><span style="line-height:1;">/</span><span style="line-height:1;">覆盖 </span><span style="line-height:1;">override</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">指</span><span style="line-height:1;">:</span><span style="line-height:1;">子类重写了父类的同名方法</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;line-height:1;"> </span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">重载 </span><span style="line-height:1;">overload</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">指</span><span style="line-height:1;">:</span><span style="line-height:1;">存在多个同名方法,但参数类型或个数不同</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">传不同的参数调用不同的方法,但是</span><span style="line-height:1;">php</span><span style="line-height:1;">中不允许存在多个同名方法,所以不能完成</span><span style="line-height:1;">java</span><span style="line-height:1;">和</span><span style="line-height:1;">c++</span><span style="line-height:1;">的这种重载</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">但是,</span><span style="line-height:1;">php</span><span style="line-height:1;">的灵活,能够达到类似的效果,用</span><span style="line-height:1;">func_get_args()</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">Func_get_args()</span><span style="line-height:1;">是可以获取函数参数列表的数组</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;color:#FF0000;font-size:10.5pt;line-height:1;">重写</span><span style="font-family:Calibri;color:#FF0000;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;line-height:1;">class fu {</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> public function say() {</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> echo '</span><span style="line-height:1;">吃了吗</span><span style="line-height:1;">';</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> }</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">}</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">class zi extends fu {</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> public function say() {</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> echo 'hello</span><br /> <span style="line-height:1;"> ';</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> }</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> /*</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> public function say($a,$b,$c) {//</span><span style="line-height:1;">报错,</span><span style="line-height:1;">php</span><span style="line-height:1;">中不能有重名方法</span><span style="line-height:1;">Cannot redeclare Stu::say()</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> echo '</span><span style="line-height:1;">哥仨好</span><span style="line-height:1;">';</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> }</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> */</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">}</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">$ming = new zi();</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">$ming->say();</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">$ming->say('lisi');//</span><span style="line-height:1;">上面的这个过程叫重写</span></span><span style="font-family:宋体;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;line-height:1;"> </span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;color:#FF0000;font-size:10.5pt;line-height:1;">重载</span><span style="font-family:宋体;color:#FF0000;font-size:10.5pt;"></span> </p> <p class="MsoNormal" style="font-size:medium;"> <span style="font-family:宋体;font-size:10.5pt;line-height:1;">/**</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> *</span><span style="line-height:1;">重载</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> */</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">class Calc {</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> public function area(){</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> $args = func_get_args();// </span><span style="line-height:1;">判断调用函数</span><span style="line-height:1;">area</span><span style="line-height:1;">时,得到的参数个数</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> if (count($args) == 1) {//</span><span style="line-height:1;">如果传过来一个参数,代表圆</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> return 3.14 * $args[0] * $args[0];//</span><span style="line-height:1;">计算圆的面积</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> }elseif (count($args) == 2) {//</span><span style="line-height:1;">如果传过来</span><span style="line-height:1;">2</span><span style="line-height:1;">个参数,代表矩形</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> return $args[0] * $args[1];//</span><span style="line-height:1;">计算矩形面积</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> }else {</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;"> return '</span><span style="line-height:1;">未知图形</span><span style="line-height:1;">';</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> }</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;"> }</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">}</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;line-height:1;">$calc = new Calc();</span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">echo $calc->area(10),'</span><br /> <span style="line-height:1;"> ';//</span><span style="line-height:1;">圆形面积</span><span style="line-height:1;">314</span></span><span style="font-family:宋体;font-size:10.5pt;"><br /> </span><span style="font-family:宋体;font-size:10.5pt;"><span style="line-height:1;">echo $calc->area(10,10);//</span><span style="line-height:1;">矩形面积</span><span style="line-height:1;">100</span></span> </p>
上一篇
下一篇
收藏
支持
标签:
特别推荐
作者推荐
热门推荐
最新文章
统计信息
联系站长
加入技术群
日志总数:92篇
网站运行:1424天
累计访客:13007
热门文章
1. PHP基础概念
2. redis:ERR AUTH <password> called without any password configured for the default user解决办法
3. PHP的语言结构之包含文件
4. PHP中public,private,protected的区别
5. PHP魔术方法总结
6. php如何转换json格式中的中文
7. PHP7新特性(常用)
8. PHP7上项目报错A non-numeric value encountered解决办法
9. 运行golang出现invalid memory address or nil pointer dereference错误
10. git常用命令集合