【发布时间】:2018-04-21 00:15:39
【问题描述】:
class Person {
public $name;
private $age; //private access
}
class Employee extends Person{
public $id;
public $salary; //class property
}
$emp = new Employee();
$emp->name="ABCD";
$emp->age = 30;
$emp->id=101;
$emp->salary=20000;
echo "<br/> Name : ".$emp->name;
echo "<br/> Age : ".$emp->age;
在这段代码中,子类变量$emp可以直接访问父类Person的私有成员。这不是违反私有访问规则吗?
使用父类变量时会出错,但与子类变量一起使用!!谁能解释一下为什么?
【问题讨论】:
-
如果您
var_dump($emp)...["age":"Person":private]=> NULL ["age"]=> int(30)... 私人Person::age为 NULL,但会创建一个新的公共Employee::age并将其设置为 30,您会看到它。 -
出于安全原因,我永远不会直接返回属性。而是创建一个将它们吐出的方法
标签: php class inheritance private-members