0

テストスクリプトを下回っていますが、なぜエラーが発生するのかわかりません。しかし、同時に期待どおりに動作します(テキスト「woof」を出力します)。

abstract class Animal { 

abstract function bark(); 
  function MakeDog(){
        return $this->bark();
  } 

} 

class Dog extends Animal { 
  function bark(){
    echo 'Woof';
  }
} 


$dog = new Dog(); 
echo $dog->MakeDog()->bark(); // this outputs 'woof' but with error. 


Fatal error: Call to a member function bark() on a non-object in [...] 26 

26行目は//echo $dog->MakeDog()->bark(); 、エラーが何に関連しているのかわかりません。

4

3 に答える 3

2

bark()メソッドの後に呼び出すことはできずMakeDog()、メッセージを返すために echo を使用することはできません。これには、正しいコードの「return」を使用します。

<?php

abstract class Animal { 

    abstract function bark(); 

    public function MakeDog(){
        return $this->bark();
    } 

} 

class Dog extends Animal { 

    function bark(){
        return 'Woof';
    }

} 

$dog = new Dog(); 

echo $dog->MakeDog();

?>
于 2013-09-14T15:10:52.910 に答える