在PHP中扩展抽象类时出现致命错误

时间:2011-11-09 14:54:06

标签: php abstract-class

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

This是我的代码。

摘录:

<?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

2 个答案:

答案 0 :(得分:7)

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

abstract public function isim($name);

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

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

    ...
}

答案 1 :(得分:2)

在抽象类中,您定义了isim()以期望参数。但是在扩展课程中,你没有遵循这条规则。

这是定义:

abstract public function isim($name);

但是你这样扩展它,没有参数:

public function isim()