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是指当前对像
附代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
<?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();
?>
|
转载于:https://www.cnblogs.com/bearcao/p/9222491.html
php的public、protected、private三种访问控制模式的区别相关推荐
- SaaS、 PaaS和IaaS,云计算三种服务模式的区别
1. SaaS:Software-as-a-Service(软件即服务) 提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器.消费者不需要管理或 ...
- php面向对象有哪三种访问控制模式,第三节 访问控制的实现
第三节 访问控制的实现 面向对象的三大特性(封装.继承.多态),其中封装是一个非常重要的特性.封装隐藏了对象内部的细节和实现,使对象能够集中而完整的描述并对应一个具体的事物,只提供对外的访问接口,这样 ...
- 桥接、NAT、HOST-ONLY三种网络模式的区别详解
在做虚拟机测试的过程中,突然发现虚拟机ping不通主机于是进行了三种网络模式的研究. 桥接: 简而言之桥接就是指:就是通过一台设备(可能不止一个)把几个网络串起来形成的连接.这边主要介绍虚拟机所采用的 ...
- VMware三种网络模式根本区别
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...
- VMware三种网络模式根本区别(图)
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...
- draw.io二次开发(1)三种运行模式的区别
想尝试在开源的drawio的基础上做一些开发,实现自己的定制化需求.可能是因为这个工具已经非常完善了吧,找到的大部分都是教你如何使用,开发相关资料太少,看来只能靠自己了. 关于开发环境搭建,请先看这一 ...
- VMware虚拟机三种网络模式的区别
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...
- lumen认证中出现unauthorized._网工知识角|一分钟搞定802.1x认证配置,了解三种授权模式的区别...
k点上方蓝字关注公众号,坚持每天技术打卡 学网络,就在IE-LAB 国内最著名的高端网络工程师培养基地 今天让我们简单看下802.1x的基本配置. 我们先考虑一下配置接口的授权方式: 接口的802.1 ...
- 面向对象编程、面向服务架构、基于组件开发三种编程模式的区别和适用领域
面向对象编程(Object-Oreinted Programming) 是一种编程范式.指在设计程序时大量运用类实例对象的方式.OOP一旦在项目中被运用,就成了时刻要考虑的东西. 面向服务架构(Ser ...
- C++ 中的三种继承public , protected, private
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
最新文章
- Eclipse导入Spring Boot项目后pom.xml出现红叉的解决办法
- html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍
- 创维oled工厂模式abd_创维电视五大新品释放创新社交属性,让新年「大有可玩」...
- (原創) 07/28/1982 少女A (中森明菜)
- ajax如何提交多表单的值_25 HTML5表单基本控件(二)
- Java进阶 | 从整体上观察面向对象
- python-容器数据类型-知识小结
- java中PriorityQueue优先级队列使用方法
- 【leetcode】给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff数对。
- Java JDBC中的Statement和PreparedStatement
- 别人改汝代码,应该怎么办
- supersocket缓冲区_SuperSocket基础二
- 我的世界Java版最诡异的种子_我的世界:MC出现诡异的种子,地域不停地重复
- latex模板——计算机学报
- 差分进化算法(python实现
- 苹果6S怎么录屏_苹果6s来电没声音怎么回事
- 设 l í {a,b,c}* 是满足下述条件的符号串构成的语言,陇东学院《编译原理》练习题及答案...
- 极速office(Word)如何在表格里面插入行或者列
- flutter重新配置sdk路径_Android studio 切换flutterSDK之后报错及解决办法(推荐)
- linux usb gadget printer使用
热门文章
- 系统学习机器学习之随机场(五)--CRF++源码L-BFGS算法补充
- pythonlist反转_Python 列表反转显示的四种方法
- mysql安装无法创建mysqld_MySQL 5.7安装错误`mysqld:无法创建/写入文件’/ var / lib / mysql / is_writable’...
- java什么是适配器类?作用是什么?_浅谈Java适配器模式
- scala单例object与伴生object入门
- 小程序开发之旅(持续更新中..)
- 开源社群系统 ThinkSNS+ 0.7.4 版本发布
- 5个Linux 服务器发行版你值得拥有
- eclipse插件:OpenExplorer快速打开文件目录
- 使用windows live writer连接CSDN和博客园博客