前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP-私有属性继承和重写

PHP-私有属性继承和重写

作者头像
cwl_java
发布2022-11-30 08:58:07
5950
发布2022-11-30 08:58:07
举报
文章被收录于专栏:cwl_Javacwl_Java

1.3 面向对象三大特性

  1. 封装
  2. 继承
  3. 多态

1.4 私有属性继承和重写

私有属性可以继承但不能重写。

代码语言:javascript
复制
<?php
class A {
	private $name='PHP';
	public function showA() {
		//var_dump($this);	//object(B)#1 (2) { ["name":"B":private]=> string(4) "Java" ["name":"A":private]=> string(3) "PHP" } 
		echo $this->name,'<br>';	//PHP
	}
}
class B extends A {
	private $name='Java';
	public function showB() {
		//var_dump($this);	//object(B)#1 (2) { ["name":"B":private]=> string(4) "Java" ["name":"A":private]=> string(3) "PHP" } 
		echo $this->name,'<br>';	//Java
	}
}
$obj=new B();
$obj->showA();
$obj->showB();
/*分析:
showA()和showB()中的$this都表示B的对象,B中继承了A的私有属性,所以B中有两个$name.
在showA()中只能访问A中的$name,不能访问B中的$name
在showB()中只能访问B中的$name,不能访问A中的$name
*/

练习一

代码语言:javascript
复制
<?php
class A {
	protected $name='tom';	
	public function showA() {
		echo $this->name,'<br>';
	}
}
class B extends A {
	public $name='berry';
	public function showB() {
		echo $this->name,'<br>';
	}
}
//测试
$obj=new B();
$obj->showA();	//berry
$obj->showB();	//berry

/*
分析:B中将A的$name重写,所以$obj中只有一个$name,($name='berry'),不管$this在哪个方法中访问,就只能访问这个$name
*/

练习二

代码语言:javascript
复制
<?php
class A {
	private $name='tom';	
	public function showA() {
		echo $this->name,'<br>';
	}
}
class B extends A {
	public $name='berry';
	public function showB() {
		echo $this->name,'<br>';
	}
}
//测试
$obj=new B();
$obj->showA();	//tom
$obj->showB();	//berry
/*
分析:
$obj中有两个$name,一个是私有的,一个是公有的
在showA()中既能访问私有的$name,也能访问公有的$name,但是私有的比公有的权限高,所以输出tom
在showB()中不能访问私有的$name,只能访问公有的$name,所以输出berry
*/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.3 面向对象三大特性
  • 1.4 私有属性继承和重写
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档