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三种访问控制模式的区别相关推荐

  1. SaaS、 PaaS和IaaS,云计算三种服务模式的区别

    1. SaaS:Software-as-a-Service(软件即服务) 提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器.消费者不需要管理或 ...

  2. php面向对象有哪三种访问控制模式,第三节 访问控制的实现

    第三节 访问控制的实现 面向对象的三大特性(封装.继承.多态),其中封装是一个非常重要的特性.封装隐藏了对象内部的细节和实现,使对象能够集中而完整的描述并对应一个具体的事物,只提供对外的访问接口,这样 ...

  3. 桥接、NAT、HOST-ONLY三种网络模式的区别详解

    在做虚拟机测试的过程中,突然发现虚拟机ping不通主机于是进行了三种网络模式的研究. 桥接: 简而言之桥接就是指:就是通过一台设备(可能不止一个)把几个网络串起来形成的连接.这边主要介绍虚拟机所采用的 ...

  4. VMware三种网络模式根本区别

    提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...

  5. VMware三种网络模式根本区别(图)

    提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...

  6. draw.io二次开发(1)三种运行模式的区别

    想尝试在开源的drawio的基础上做一些开发,实现自己的定制化需求.可能是因为这个工具已经非常完善了吧,找到的大部分都是教你如何使用,开发相关资料太少,看来只能靠自己了. 关于开发环境搭建,请先看这一 ...

  7. VMware虚拟机三种网络模式的区别

    提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...

  8. lumen认证中出现unauthorized._网工知识角|一分钟搞定802.1x认证配置,了解三种授权模式的区别...

    k点上方蓝字关注公众号,坚持每天技术打卡 学网络,就在IE-LAB 国内最著名的高端网络工程师培养基地 今天让我们简单看下802.1x的基本配置. 我们先考虑一下配置接口的授权方式: 接口的802.1 ...

  9. 面向对象编程、面向服务架构、基于组件开发三种编程模式的区别和适用领域

    面向对象编程(Object-Oreinted Programming) 是一种编程范式.指在设计程序时大量运用类实例对象的方式.OOP一旦在项目中被运用,就成了时刻要考虑的东西. 面向服务架构(Ser ...

  10. C++ 中的三种继承public , protected, private

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...

最新文章

  1. Eclipse导入Spring Boot项目后pom.xml出现红叉的解决办法
  2. html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍
  3. 创维oled工厂模式abd_创维电视五大新品释放创新社交属性,让新年「大有可玩」...
  4. (原創) 07/28/1982 少女A (中森明菜)
  5. ajax如何提交多表单的值_25 HTML5表单基本控件(二)
  6. Java进阶 | 从整体上观察面向对象
  7. python-容器数据类型-知识小结
  8. java中PriorityQueue优先级队列使用方法
  9. 【leetcode】给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff数对。
  10. Java JDBC中的Statement和PreparedStatement
  11. 别人改汝代码,应该怎么办
  12. supersocket缓冲区_SuperSocket基础二
  13. 我的世界Java版最诡异的种子_我的世界:MC出现诡异的种子,地域不停地重复
  14. latex模板——计算机学报
  15. 差分进化算法(python实现
  16. 苹果6S怎么录屏_苹果6s来电没声音怎么回事
  17. 设 l í {a,b,c}* 是满足下述条件的符号串构成的语言,陇东学院《编译原理》练习题及答案...
  18. 极速office(Word)如何在表格里面插入行或者列
  19. flutter重新配置sdk路径_Android studio 切换flutterSDK之后报错及解决办法(推荐)
  20. linux usb gadget printer使用

热门文章

  1. 系统学习机器学习之随机场(五)--CRF++源码L-BFGS算法补充
  2. pythonlist反转_Python 列表反转显示的四种方法
  3. mysql安装无法创建mysqld_MySQL 5.7安装错误`mysqld:无法创建/写入文件’/ var / lib / mysql / is_writable’...
  4. java什么是适配器类?作用是什么?_浅谈Java适配器模式
  5. scala单例object与伴生object入门
  6. 小程序开发之旅(持续更新中..)
  7. 开源社群系统 ThinkSNS+ 0.7.4 版本发布
  8. 5个Linux 服务器发行版你值得拥有
  9. eclipse插件:OpenExplorer快速打开文件目录
  10. 使用windows live writer连接CSDN和博客园博客