美文网首页PHP 面向对象详解
PHP 面向对象 (一)权限修饰符

PHP 面向对象 (一)权限修饰符

作者: 一句话儿 | 来源:发表于2020-01-11 00:32 被阅读0次
    权限修饰符
    
    作用:控制访问权限,修饰属性,方法
    
    权限控制符:public(公开的)  protected(受保护的)  private(私有的)
    
    区别: 
    public    类内,类外,可以访问
    protected  类内,子类的类内,可以访问
    private 只有当前类的类内,可以访问
    
    关于继承:
    子类可以继承父类私有属性,不能继承私有方法
    子类继承自父类的属性方法,必须比父类更松弛
    
    实践
    
    编写父类Father 和 子类Son  demo1.php
    <?php
        /**
         * Desc: 权限控制符的使用,父类, 建立查找关系,拷贝
         * User: zyy
         * Date: 2019-12-08
         * Time: 下午 20:07
         */
        class Father{
            public $name;
            protected $salary;
            private $money; //私房钱
    
            public function __construct($name, $salary, $money)
            {
                $this->name = $name;
                $this->salary = $salary;
                $this->money = $money;
            }
    
            /**
             * 获取姓名
             *
             * @return string
             * User: zyy
             * Date: 2019-12-08
             * Time: 下午 20:09
             */
            public function getName()
            {
                return $this->name;
            }
    
            /**
             * 获取薪水
             *
             * @return int
             * User: zyy
             * Date: 2019-12-08
             * Time: 下午 20:10
             */
            protected function getSalary()
            {
                return $this->salary;
            }
    
            /**
             * 获取钱
             *
             * @return int
             * User: zyy
             * Date: 2019-12-08
             * Time: 下午 20:10
             */
            private function getMoney()
            {
                return $this->salary;
            }
    
            /**
             * 获取信息
             *
             * User: zyy
             * Date: 2020-01-10
             * Time: 下午 23:42
             */
            public function getInfo()
            {
                // 所有属性在方法内都能访问
                echo $this->name . "的薪水一个月" . $this->salary . ",存款" . $this->money;
                echo "<br/>";
            }
        }
    
    
    
        /**
         * Desc: 子类,可以继承父类非private属性和方法
         * User: zyy
         * Date: 2019-12-08
         * Time: 下午 20:16
         */
        class Son extends Father
        {
        //        private $salary; //控制权限必须必父类更松弛, 可以声明为protected 和 public
            private $age;
    
            /**
             * 获取父类信息
             *
             * User: zyy
             * Date: 2020-01-10
             * Time: 下午 23:42
             */
            public function getFatherInfo()
            {
                //子类不能调用父类的属性,可以调用父类的方法获取属性
                parent::getName();
                parent::getSalary();
        //            parent::getMoney(); //子类不能调用父类私有方法
        //            $this->getMoney(); //子类不能继承父类私有方法,私有属性可以继承(通过访问继承的公开方法,即可访问到私有属性)
            }
        }
    
    //父类
    $father1 = new Father('father1', 5000, 100000);
    //类内public protected private属性都可以访问
    $father1->getInfo();
    
    //类外只能访问 public
    echo $father1->name;
    //    echo $father1->salary; //受保护属性类外不能访问
    //    echo $father1->money; //私有属性类外不能访问
    
    
    //子类继承父类
    $son1 = new Son('son1', 2000, 0);
    //类内public protected private属性都可以访问
    $son1->getInfo();
    
    //类外只能访问 public
    echo $son1->name;
    //    echo $son1->salary;//受保护属性类外不能访问
    //    echo $son1->money;//私有属性类外不能访问
    

    相关文章

      网友评论

        本文标题:PHP 面向对象 (一)权限修饰符

        本文链接:https://www.haomeiwen.com/subject/cxhvactx.html