1 回答
TA贡献1796条经验 获得超7个赞
你有 2 个对象。对象中的默认名称是“Alex”。因此,当您创建一个新对象并且未明确为其命名时,它将使用“Alex”,因为这是默认设置。
$p = new Dad;
// name is Alex.
$q = new Son;
// name is Alex
$p->setName('John'); // Now the name of $p is John
$q->setName('Beto'); // Now the name of $q is Beto. $p remains unchanged.
这是对象的要点,它们是分开的。
如果您想要一种更改默认名称的方法,那么您可以这样做。
class Dad
{
protected $name;
static protected $defaultName = 'Alex';
public function __construct()
{
$this->name = self::$defaultName;
}
public function showName()
{
return $this->name;
}
public static function setDefault($name)
{
self::$defaultName = $name;
}
}
现在:
$p = new Dad; // $p->name is 'Alex'
Dad::setDefault('Bernie');
$q = new Dad; // $q->name is 'Bernie', $p is not changed
$r = new Dad; // $r->name is 'Bernie'
Dad::setDefault('Walt');
$t = new Dad; // $t->name is Walt
希望这可以帮助。
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报