Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当我声明两个具有相同名称但不同签名的方法时,为什么会出现错误?_Php_Polymorphism - Fatal编程技术网

Php 当我声明两个具有相同名称但不同签名的方法时,为什么会出现错误?

Php 当我声明两个具有相同名称但不同签名的方法时,为什么会出现错误?,php,polymorphism,Php,Polymorphism,在下面的脚本中,我声明了两个名称相同但签名不同的方法。但我在声明时遇到一个错误: 致命错误:无法在第7行的/opt/lampp/htdocs/Tester.php中重新声明Tester::calculate()。为什么呢?Php不支持这种多态性 <?php class Tester { public function calculate() { echo 2*2; } public function calculate($var_1,$var_2)

在下面的脚本中,我声明了两个名称相同但签名不同的方法。但我在声明时遇到一个错误:

致命错误:无法在第7行的/opt/lampp/htdocs/Tester.php中重新声明Tester::calculate()。为什么呢?Php不支持这种多态性

<?php
class Tester {
    public function calculate() {
        echo 2*2;
    }

    public function calculate($var_1,$var_2) {
        echo $var_1*$var_2;
    }
}

$obj = new Tester();
$obj->calculate();
echo "<br />";
$obj->calculate(5,4);
PHP!=(java,C++,C语言,vb.net)< /P>
尽管PHP大量借鉴了Java,但这两种语言(以及其他OOP语言)之间存在一些很大的差异。一个大问题是,不能让方法使用相同的名称和不同的参数。您需要:

  • 使用
  • 使用不同的方法命名
  • 扩展父/抽象类(也称为),然后可以使用

公共函数计算($var\u 1=2,$var\u 2=2)
?:)PHP的可能副本不是从Java借用的。PHP借鉴C/C++,Java借鉴C/C++。PHP和Java几乎同时发布,应该被视为“兄弟”语言。