奇葩的錯誤 速來人
<?php
abstract class Eat
{
abstract public function eat($food);
public function breath()
{
echo 'Breathing'.'<br />';
}
}
class Human extends Eat
{
public function eat($food)
{
echo 'Human eat'.$food.'<br />';
}
}
class Animal extends Eat
{
public function eat($food)
{
echo 'Animal eat'.$food.'<br />';
}
}
$monkey = new Animal();
$monkey->eat('apple');
?>
Fatal error: Cannot call abstract method Eat::eat() in?D:\xampp\htdocs\oop\abstrct.class.php?on line?25
2017-04-26
在PHP5以前的版本中,構(gòu)造函數(shù)的名稱必須與類名相同,這種方法在PHP5中仍然可以使用,但現(xiàn)在已經(jīng)很少有人用了。
PHP5以及之后的版本,構(gòu)造函數(shù)用__construct()方法來聲明,這樣做的好處是可以使構(gòu)造函數(shù)獨(dú)立于類名,當(dāng)類名發(fā)生改變時不需要改相應(yīng)的構(gòu)造函數(shù)名稱了。
為了向下兼容,如果一個類中沒有名為__construct( )的方法,PHP將搜索一個與類名相同名的構(gòu)造方法。
如果__construct( )的方法、與類名相同名的構(gòu)造方法同時存在的話,優(yōu)先使用__construct( )的方法。
綜上述,一樓正解。
2016-01-10
你這個抽象類和抽象類里面的函數(shù)名其實(shí)是一樣的,這樣就會被認(rèn)為是它的構(gòu)造函數(shù),然后就會報錯了
改成這樣的吧,或者函數(shù)名換一個名字應(yīng)該就可以了!