public(公有),protected(受保护)或 private(私有)

访问控制(可见性)

  1. 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
  2. 被定义为 公有的类成员 可以在任何地方被访问。
  3. 被定义为 受保护的类成员 则可以被其自身以及其子类和父类访问。

被定义为 私有的类成员 则只能被其定义所在的类访问

 

位置privateprotectedpublic
本类内YYY
子类内NYY
外部NNY
能否重新定义NYY

属性的访问控制

  1. 类属性必须定义为公有,受保护,私有之一。
  2. 如果用 var 定义,则被视为公有

方法的访问控制

  1. 类中的方法可以被定义为公有,私有或受保护。
  2. 如果没有设置这些关键字,则该方法默认为公有
<?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        public $public = 'Public';
        protected $protected = 'Protected';
        private $private = 'Private';

        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }

    $obj = new MyClass();
    echo $obj->public; // 这行能被正常执行
    echo $obj->protected; // 这行会产生一个致命错误
    echo $obj->private; // 这行也会产生一个致命错误
    $obj->printHello(); // 输出 Public、Protected 和 Private


    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 可以对 public 和 protected 进行重定义,但 private 而不能
        protected $protected = 'Protected2';

        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }

    $obj2 = new MyClass2();
    echo $obj2->public; // 这行能被正常执行
    echo $obj2->private; // 未定义 private
    echo $obj2->protected; // 这行会产生一个致命错误
    $obj2->printHello(); // 输出 Public、Protected2 和 Undefined

?>

出处https://blog.csdn.net/qq_16142851/article/details/80296730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值