我正在学习高级的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()