0

おそらくばかげた質問..しかし、クラスTestbのクラスTestのメソッドをオーバーライドせずに正しく使用するにはどうすればよいですか?

<?php
class Test {

    private $name;

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

    public function getName() {
        return $this->name;
    }

}

<?php

class Testb extends Test {

    public function __construct() {
        parent::__construct($name);
    }

}

<?php

include('test.php');
include('testb.php');

$a = new Test('John');
$b = new Testb('Batman');

echo $b->getName();
4

1 に答える 1

1

その引数で初期化できるようにする場合は、Testbコンストラクターにもパラメーターを指定する必要があります。コンストラクターが実際に引数を取るようにクラス$nameを変更しました。現在の方法では、クラスTestbを初期化できないはずです。Testb次のようにコードを使用します。

<?php
class Test {

    private $name;

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

    public function getName() {
        return $this->name;
    }

}

class Testb extends Test {

    // I added the $name parameter to this constructor as well
    // before it was blank.
    public function __construct($name) {
        parent::__construct($name);
    }

}

$a = new Test('John');
$b = new Testb('Batman');

echo $a->getName();
echo $b->getName();
?>

おそらく、エラー報告が有効になっていませんか? いずれにせよ、ここで私の結果を確認できます: http://ideone.com/MHP2oX

于 2013-02-10T22:10:17.853 に答える