// =代码部分1=
class Human {
private $wife = '小甜甜';
public function tell() {
echo $this->wife,'<br >';
}
public function cry() {
echo '5555<br >';
}
}
class Stu extends Human {
public function subtell() {
echo $this->wife,'<br >';
}
}
$lisi = new Stu();
$lisi->cry(); //5555
$lisi->tell(); //小甜甜
$lisi->subtell(); //报错
/*
未定义的属性,wife属性
Notice: Undefined property: Stu::$wife
*/
/*
问:父类不是有wife属性吗?为什么没继承过来?
答:私有的属性,可以理解不能继承.
(其实继承过来了,只不过无法访问)
*/
// =代码部分2=
class Human2 {
private $wife = '小甜甜';
public $age = 22;
public function cry() {
echo '5555<br >';
}
}
class Stu2 extends Human2 {
private $wife = '凤姐';
public $height = 180;
public function subtell() {
echo $this->wife;
}
}
$lisi = new Stu2();
echo '<pre >';
print_r($lisi);
/*
Stu2 Object
(
[wife:Stu2:private] => 凤姐
[height] => 180
[age] => 22
[wife:Human2:private] => 小甜甜
)
*/
// 如何访问继承过来的父类属性
// =代码部分3=
class Human3 {
private $wife = '小甜甜';
public $age = 22;
public function cry() {
echo '5555<br >';
}
}
class Stu3 extends Human3 {
private $wife = '凤姐';
public $height = 180;
public function sshow() {
parent::pshow();
echo $this->wife;
}
}
$lisi = new Stu3();
//echo '<pre >';
//print_r($lisi);
$lisi->sshow();
// Fatal error: Call to undefined method Human3::pshow()
/*
根据图来思考:
如果把Stu类中的 wife=凤姐去掉,什么效果? // 未定义属性
如果把Human类中的 wife=小甜甜去掉,什么效果? // 无权访问
*/
/*
总结:
继承时,继承来protected/public 属性/方法
完全继承过来,属性子类.
继承来的 父类private 属性/方法
继承但不能操作.
*/