PHP面向对象 —— 12 私有属性的继承

// =代码部分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 属性/方法
继承但不能操作.
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值