php的public、protected、private三种访问控制模式的区别
public: 公有类型
在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法
在实例中可以能过$obj->var 来调用 public类型的方法或属性
protected: 受保护类型
在子类中可以通过self::var调用protected方法或属性,parent::method调用父类方法
在实例中不能通过$obj->var 来调用 protected类型的方法或属性
private: 私有类型
该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法
2.self 和 parent 的区别
a).在子类中常用到这两个对像。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用
b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对像
附代码:
<?php
/**
* parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性
* self 可以调用父类中除私有类型的方法和属性外的所有数据
*/
class User{
public $name;
private $passwd;
protected $email;
public function __construct(){
//print __CLASS__." ";
$this->name= 'simple';
$this->passwd='123456';
$this->email = 'bjbs_270@163.com';
}
public function show(){
print "good ";
}
public function inUserClassPublic() {
print __CLASS__.'::'.__FUNCTION__." ";
}
protected function inUserClassProtected(){
print __CLASS__.'::'.__FUNCTION__." ";
}
private function inUserClassPrivate(){
print __CLASS__.'::'.__FUNCTION__." ";
}}

class simpleUser extends User {
public function __construct(){
//print __CLASS__." ";
parent::__construct();
}
public function show(){
print $this->name."//public ";
print $this->passwd."//private ";
print $this->email."//protected ";
}
public function inSimpleUserClassPublic() {
print __CLASS__.'::'.__FUNCTION__." ";
}
protected function inSimpleUserClassProtected(){
print __CLASS__.'::'.__FUNCTION__." ";
}
private function inSimpleUserClassPrivate() {
print __CLASS__.'::'.__FUNCTION__." ";
}
}
class adminUser extends simpleUser {
protected $admin_user;
public function __construct(){
//print __CLASS__." ";
parent::__construct();
}
public function inAdminUserClassPublic(){
print __CLASS__.'::'.__FUNCTION__." ";
}
protected function inAdminUserClassProtected(){
print __CLASS__.'::'.__FUNCTION__." ";
}
private function inAdminUserClassPrivate(){
print __CLASS__.'::'.__FUNCTION__." ";
}
}
class administrator extends adminUser {
public function __construct(){
parent::__construct();
}
}
/**
* 在类的实例中 只有公有属性和方法才可以通过实例化来调用
*/
$s = new administrator();
print '-------------------';
$s->show();
?>php的public、protected、private三种访问控制模式的区别的更多相关文章
- [转]php的public、protected、private三种访问控制模式的区别
FROM : http://blog.163.com/weiwenjuan_bj/blog/static/14035033620129304183850/?suggestedreading publi ...
- php中的public、protected、private三种访问控制模式及self和parent的区别(转)
php的public.protected.private三种访问控制模式的区别 public: 公有类型 在子类中可以通过self::var调用public方法或属性,parent::method调用 ...
- VMware 三种网络模式的区别
VMware 三种网络模式的区别 VMware 三种网络模式的区别 我们首先说一下VMware的几个虚拟设备 VMnet0:用于虚拟桥接网络下的虚拟交换机 VMnet1:用于虚拟Host-Only网络 ...
- (转)VMware虚拟机三种网络模式的区别及配置方法;
我的一点实际经验理解桥接和NAT 桥接是虚拟机完全作为一个独立的地址接在局域网中,NAT是虚拟机依赖宿主主机地址转换的一种方式 例子我的虚拟机如果用桥接模式,连接外部网站如百度时会提示此pc没有装公司 ...
- PHP三种访问控制模式(public、protected、private)解析
参考:https://www.cnblogs.com/chbyl/p/7116591.html public:公有类型 在子类中可以通过self::var调用方法或属性,可以使用parent::met ...
- vmware虚拟机三种网络模式的区别
首先安装了VMware,在其中安装了Ubuntu系统,正常启动之后开始考虑怎么才能够让主机和虚拟机实现网络互连并且由主机向虚拟机发送文件,通过在网上查阅相关资料,记录学习笔记如下. 学习参考资料: l ...
- VMware虚拟机三种网络模式的区别(上篇)
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...
- C++中public/protect/private三种访问权限控制
一.成员访问权限控制 1.public (1)public成员变量可以被成员函数访问 [访问性] (2)public成员可以被实体对象访问 [访问性] (3)public成员可以成为子类成员 [ ...
- 基于云计算的IaaS、PaaS、SaaS三种服务模式的区别
Infrastructure-as-a-Service(IaaS) - 基础即设施服务 基础设施主要包括网络系统(networking).存储设备(storage).服务器(servers).虚拟化技 ...
随机推荐
- Oracle存储过程的调用(返回参数)
CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OU ...
- P2022 有趣的数
P2022 有趣的数 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的 ...
- html5+css3第一屏滚屏动画效果
详细内容请点击 在线预览立即下载 html5+css3第一屏滚屏动画效果. 转载自:http://tympanus.net/codrops/2014/05/22/inspiration-for-art ...
- AngularJS尝鲜一
第一个小例子,体验一下: <!DOCTYPE html> <html> <head> <title>Index</title> </h ...
- android四种更新UI的方法
笔记: // 使用handler.post(Runnable)更新UI public void updateUI_Fun1() { new Thread() { public void run() { ...
- 使用jquery插件报错:TypeError:$.browser is undefined的解决方法
关于$.browser browser就是用来获取浏览器基本信息的. jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.sup ...
- asp.net中c# TextBox.MaxLength例子
TextBox.MaxLength 属性获取或设置文本框中最多允许的字符数文本框中最多允许的字符数.默认值为 0,表示未设置该属性.使用 MaxLength 属性限定可以在 TextBox 控件中输入 ...
- HTML5 Web SQL Database 数据库的使用方法【图文说明】
页面代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
- UILabel 整理
UILabel 多行文字自动换行 (自动折行) 1.UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 3 ...
- android ListView_Tiger
xml设计 <?xml version="1.0"?> -<LinearLayout tools:context=".MainActivity" ...