-2
class Message {

    protected $body;

    public function setBody($body)
    {
        $this->body = $body;
    }

    public function getBody()
    {
        return $this->body;
    }
}

class ExtendedMessage extends Message {

    private $some;

    public function __construct($somedata) 
    {
        $this->some = $somedata;
    }

    public function getBody()
    {
        return $this->some;
    }
}

$a = new Message;

$b = new ExtendedMessage('text');

$a->getBody(); // NULL`

$b->getBody(); // text`
4

1 に答える 1

0

$a がメッセージ クラスを構築する場合、$body は NULL になるため、何も設定されず、__construct() は起動されず (存在しません)、$body が何かに設定されます。

1 本体を何かに設定します。それ以外の場合は常に NULL になります

$a = new Message;
$a->setBody("my text here");
$a->getBody(); // returns "my text here"

2 メッセージクラスにコンストラクターを追加

class Message {

    protected $body;

    public function __construct($a="") {
        $this->body = $a;
    }

    // ur code as shown
}

走るより

$a = new Message("my text");
$a->getBody(); // returns "my text"

$b = new Message;
$b->getBody(); // returns "" - emtpy string

3 メッセージ クラスの本文をクラス定義の空の文字列に設定する

protected $body = ""; // or whatever u want

getBody() を使用してクラスを構築した後、val を返します。

于 2014-11-12T18:25:09.053 に答える