方法重载是面向对象编程的概念,它有助于轻松地构建复合应用程序。函数重载或方法重载是一项功能,它允许创建多个名称相似的方法,这些方法在其作为参数接受的输入参数的类型上彼此不同。
上面的概念对于其他编程语言来说很好,它被称为静态多态,即方法重载。
让我们通过一个例子来理解。
<?php class machine { function doTask($var1){ return $var1; } function doTask($var1,$var2){ return $var1 * $var1 ; } } $task1 = new machine(); $task1->doTask(5,10); ?>
Error
这将产生错误,因为php会说您已两次声明此方法。
但是其他编程语言说,doTask($var1)和doTask($var1,$var2)是重载方法。要调用后者,必须传递两个参数,而前者只需要一个参数。
因此,这种行为(即在编码时决定调用函数的决定)被称为静态多态(即方法重载)。
让我们讨论如何实现与PHP5相关的方法重载。在PHP的情况下,我们必须利用PHP的魔术方法__call()来实现方法重载。
在PHP中,重载意味着方法的行为根据输入参数动态变化。在本教程中,我们将理解这些看法。让我们讨论__call()方法。
如果某个类执行__call(),则如果使用不存在的方法调用该类的对象,则将调用__call()而不是该方法。
让我们通过一个例子来了解方法重载。
<?php class Shape { const PI = 3.142 ; function __call($name,$arg){ if($name == 'area') switch(count($arg)){ case 0 : return 0 ; case 1 : return self::PI * $arg[0] ; case 2 : return $arg[0] * $arg[1]; } } } $circle = new Shape(); echo $circle->area(3); $rect = new Shape(); echo $rect->area(8,6); ?>
9.426 48
这里的area()
方法是动态创建的,并在魔术方法__call()的帮助下执行,其行为根据作为对象的参数传递而变化。
本文向大家介绍什么是C#中的方法重载?,包括了什么是C#中的方法重载?的使用技巧和注意事项,需要的朋友参考一下 具有相同名称但参数不同的两个或两个以上方法在C#中称为方法重载。 可以通过更改参数的数量和参数的数据类型来执行C#中的方法重载。 假设您有一个输出数字乘法的函数,那么我们的重载方法将具有相同的名称,但参数数量不同- 以下是显示如何实现方法重载的示例- 示例 输出结果
问题内容: 在PHP中,函数重载和函数覆盖是什么意思。两者之间有什么区别?无法弄清楚它们之间有什么区别。 问题答案: 重载 定义的函数具有相似的签名,但具有不同的参数。 覆盖 仅与派生类相关,派生类中的父类已定义了一个方法,而派生类希望 覆盖 该方法。 在PHP中,您只能使用magic方法重载方法。 覆盖 的示例:
我正忙着学习android,我遇到了方法。我真的不明白它的用途和用途是什么。
问题内容: 该符号在PHP中是什么意思? 问题答案: PHP提供了一些控制结构的替代语法。即,是否,for,foreach和switch。在每种情况下,替代语法的基本形式都是将左大括号更改为冒号(:),将右大括号更改为endif;,endwhile;,endfor;,endforeach;或endswitch;。
问题内容: 这个问题应该比关于更多。 我有一个子类(在python 2.7中,numpy 1.6.2),并且我发现在对象时未列出的字段名称(因此,ipython的自动完成功能无效)。 为了修复它,我尝试在子类中重写,如下所示: 结果是:。(我发现这里实际上应该在python 3.3中工作…) 作为一种解决方法,我尝试了: 据我所知,这是可行的,但当然并不优雅。 问题: 后一种解决方案对我而言是否正
本文向大家介绍JavaScript中的startsWith()方法的重要性是什么?,包括了JavaScript中的startsWith()方法的重要性是什么?的使用技巧和注意事项,需要的朋友参考一下 要知道是使用特定字符开头的字符串还是使用indexOf()方法。但是在高级应用程序中,此方法已过时。因此,ES6为我们提供了startsWith()方法来执行那些高级任务。 在下面的示例中,使用Ind