亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

奇葩的錯誤 速來人

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

正在回答

2 回答

在PHP5以前的版本中,構造函數的名稱必須與類名相同,這種方法在PHP5中仍然可以使用,但現在已經很少有人用了。
PHP5以及之后的版本,構造函數用__construct()方法來聲明,這樣做的好處是可以使構造函數獨立于類名,當類名發生改變時不需要改相應的構造函數名稱了。
為了向下兼容,如果一個類中沒有名為__construct( )的方法,PHP將搜索一個與類名相同名的構造方法。
如果__construct( )的方法、與類名相同名的構造方法同時存在的話,優先使用__construct( )的方法。

綜上述,一樓正解。

0 回復 有任何疑惑可以回復我~

你這個抽象類和抽象類里面的函數名其實是一樣的,這樣就會被認為是它的構造函數,然后就會報錯了

http://img1.sycdn.imooc.com//5691e7e1000138c209660759.jpg

改成這樣的吧,或者函數名換一個名字應該就可以了!

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

奇葩的錯誤 速來人

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號