继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

一句话儿的事
关注TA
已关注
手记 12
粉丝 1
获赞 1
权限修饰符

作用:控制访问权限,修饰属性,方法

权限控制符: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;//私有属性类外不能访问
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP