gpt4 book ai didi

php - 为什么 PHP 私有(private)变量适用于扩展类?

转载 作者:行者123 更新时间:2023-12-04 13:04:50 25 4
gpt4 key购买 nike

当我尝试从扩展类而不是基类设置属性的值时,它不应该产生错误吗?

<?php
class first{
public $id = 22;
private $name;
protected $email;
public function __construct(){
echo "Base function constructor<br />";
}
public function printit(){
echo "Hello World<br />";
}
public function __destruct(){
echo "Base function destructor!<br />";
}
}
class second extends first{
public function __construct($myName, $myEmail){
$this->name = $myName;
$this->email = $myEmail;
$this->reveal();
}
public function reveal(){
echo $this->name.'<br />';
echo $this->email.'<br />';
}
}
$object = new second('sth','aaa@bbb.com');

?>

最佳答案

私有(private)变量在子类中不可访问。这就是访问修饰符protected是为了。这里发生的事情是,当您访问一个不存在的变量时,它会使用默认访问修饰符 public 为您创建一个变量。 .

这是向您展示状态的 UML:

enter image description here

请注意:子类仍然可以访问所有 publicprotected来自其父类(super class)的方法和变量 - 但不在 UML 图中!

关于php - 为什么 PHP 私有(private)变量适用于扩展类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36472579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com