繁体   English   中英

类的声明必须与接口兼容

[英]Declaration of class must be compatible with interface

Comparare.php
    <?php
    interface Comparare{
    public function compara(self $a);
    }
    ?>

clasa.php
<?php
class Clasa implements Comparare{
    public $v;
    public function compara(self $a){
        if($this->v < $a->v)
        {
            return -1;
        }
        else if($this->v==$a->v)
        {
            return 0;
        }
        else
        {
            return 1;
        }
    }
    function __construct($a){
        $this->v=$a;
    }
}
?>
test.php
<?php
function __autoload($class_name){
    require_once ($class_name) . ".php";
}
function maxim(Comparare $a,Comparare $b){
    if ($a->compara($b)<0){
        return $b;
    }
    else {
        return $a;
    }
}
$x=new Clasa(7);
$y=new Clasa(8);
$max=maxim($x,$y);
echo "maximul este:" . $max;
?>

致命错误:第3行的D:\\ xammp \\ htdocs \\ php \\ clase \\ comparare \\ clasa.php中的Clasa :: compara()声明必须与Comparare :: compara(Comparare $ a)兼容

我使用XAMPP 3.2.2(PHP版本5.5.33)

接口中的self类型是指接口-在您的类中,它是指类。 那是两种不同的类型。 定义方法时需要使用接口类型名称,以使类型匹配。 在实现接口方法时,签名(包括类型)必须匹配才能实现。

public function compara(Comparare $a) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM