// 比较private、protected、public三者的区别
/*
private protected public
本类内 Y Y Y
子类内 N Y Y
外部 N N Y
*/
class Human {
private $name = 'zhangsan';
protected $money = 3000;
public $age = 28;
public function say() {
echo '我叫',$this->name,'<br >';
echo '我有',$this->money,'元钱<br >';
echo '我今年',$this->age,'岁<br >';
}
}
class Stu extends Human {
private $friend = '小花';
public function talk() {
echo '我叫',$this->name,'<br >';
echo '我有',$this->money,'元钱<br >';
echo '我今年',$this->age,'岁<br >';
}
}
$ming = new Stu();
// 下行会报错,因为类外不能调用private属性
// Fatal error: Cannot access private property Stu::$friend
echo $ming->friend;
// 下行会报错,因为类外不能调用protected属性
// Fatal error: Cannot access protected property Stu::$money
echo $ming->money;
// 无法调用private属性的name
// Notice: Undefined property: Stu::$name
$ming->talk();
// 我叫(报错)
// 我有3000元钱
// 我今年28岁
$yuan = new Human();
$yuan->say();
// 我叫zhangsan
// 我有3000元钱
// 我今年28岁
/*
总结:
public 可以在类外调用,权限最为宽松
protected 和 private不能在类外调用
protected 可以在 子类内访问
public 和 protected 可以在本类内访问
*/