为了账号安全,请及时绑定邮箱和手机立即绑定

什么是PHP中的函数重载和覆盖?

什么是PHP中的函数重载和覆盖?

PHP
哔哔one 2019-09-19 15:23:26
在PHP中,你的意思是函数重载和函数重写。它们两者有什么区别?无法弄清楚它们之间有什么区别。
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

重载是定义具有相似签名但具有不同参数的函数。覆盖仅与派生类相关,其中父类已定义方法,派生类希望覆盖该方法。


在PHP中,您只能使用magic方法重载方法__call。


覆盖的一个例子:


<?php


class Foo {

   function myFoo() {

      return "Foo";

   }

}


class Bar extends Foo {

   function myFoo() {

      return "Bar";

   }

}


$foo = new Foo;

$bar = new Bar;

echo($foo->myFoo()); //"Foo"

echo($bar->myFoo()); //"Bar"

?>


查看完整回答
反对 回复 2019-09-19
?
互换的青春

TA贡献1797条经验 获得超6个赞

使用不同的参数集定义相同的函数名两次(或更多)时,会发生函数重载。例如:


class Addition {

  function compute($first, $second) {

    return $first+$second;

  }


  function compute($first, $second, $third) {

    return $first+$second+$third;

  }

}

在上面的示例中,函数compute使用两个不同的参数签名重载。* PHP尚不支持此功能。另一种方法是使用可选参数:


class Addition {

  function compute($first, $second, $third = 0) {

    return $first+$second+$third;

  }

}

扩展类并重写父类中存在的函数时,会发生函数重写:


class Substraction extends Addition {

  function compute($first, $second, $third = 0) {

    return $first-$second-$third;

  }

}

例如,compute覆盖中所述的行为Addition


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 491 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信