在PHP中扩展抽象类时发生致命错误


Fatal error when extending abstract class in PHP

我正在学习高级的OOP PHP..(或者我想学习:))

这是我的代码。

摘录:

<?php 
abstract class Karakter
{
    abstract public function isim($name);
    abstract public function yas($age);
    public function yazdir()
    {
        print $this->isim() . " " . $this->yas();
    }
}
class Insan extends Karakter
{
    public $isim;
    public $yas;
    public function isim()
    {
        return "Bu adamın ismi: " . $this->isim;
    }
    public function yas()
    {
        return "Bu adamın yaşı: " . $this->yas;
    }
}

当我运行这段代码时,我无法通过。我可以看到这个错误:

Fatal error: Declaration of Insan::isim() must be compatible with that of Karakter::isim() in C:'AppServ'www'OOP'1.php on line 26

您已经在抽象类中使用一个参数定义了函数isim

abstract public function isim($name);

为了在任何子类中正确实现这个函数,你必须只用一个参数覆盖这个函数:

class Insan extends Karakter {
    public function isim($name) {
       [..]
    }
    ...
}

在您的抽象类中,您定义了isim()以期望一个参数。但是在扩展类中,您没有遵循此规则。

这是定义:

abstract public function isim($name);

然后像这样扩展它,不带参数:

public function isim()