• 面向对象的三大特性


    //面向对象的三大特性:①封装②继承③多态

    //运用封装方法复杂很多但还使用其目的是:为了控制用户的输入或者用户的取值,让类更加的安全。

    //做法:

    //  1.将成员变量变为私有(将类里面的public改为private,使外界访问不到,增加了其安全性。)

    //  2.做一个成员方法来间接访问类里面的变量。(运用function  setAge()来访问或者赋值给成员变量age。)

    //  3.在该方法里面加限制条件。

    1.

    class  Ren

    {

      private  $age;  //18-50之间。

      function setAge($n)  //通过用这个setAge()方法来可以给$age访问并且赋值。

      {

        if($n>=18 && $n<=50)

        {

          $this->age=$n;

        }

      }

      function  getAge()    //若从外界要调用getAge()就可以获取$age的值了。

      {

        return $this->age;  //返回成员变量age的值

      }

    }

    $r= new Ren();  //从Ren类里面造一个对象$r

    $r->setAge("20");  //给成员变量age赋值20

    echo $r->getAge();  //调用getAge方法并且输出age的值

    2.

    class Ren

    {

      private  $age;  //18-50之间

      private  $name;

      //魔术方法,给变量赋值。

      function  __set($n,$v)  //定义一个set方法,参数$n得是一个变量,$v得是一个值。

      {

        if($n=="age")     //加限制,给的$n这个变量如果是$age需要再判断$v是否在18到50之间都满足的话给age赋值,若不满足直接赋值。

        {

          if($v>=18 && $v<=50)

          {

            $this->$n = $v;

          }

        }

        else

        {

          $this->$n = $v;    //给变量$n赋值为$v

        }

      }

    }

      //魔术方法,取变量值。

      function  __get($n)  //定义一个__get方法来获取类里面的成员变量。括号内的参数$n为一个变量。

      {

        return  $this->$n;  

      }

    $r= new Ren();    //从Ren类里面造一个对象$r

    $r->__set("age",20);    //用造的$r这个对象调用类里面的__set方法,再给age这个成员变量赋值20

    var_dump($r);        //最后输出一下这个对象$r

    echo  $r->$name;      //输出造的对象$r调用一下成员变量name的值,就可以自动直接调用这个__get方法了,它把$name当做参数传到__get方法里面,返回类里面的name值直接使用了

    //定义了__set方法的好处:没写__set方法前类里面的成员变量是private的,外界不能访问也就是用以前的$r->age=20;命令按理说不能执行访问并且赋值,但因为在类里面定义了__set方法,所以从外界用以前的$r->age=20命令可以访问并且赋值。

    //用__set方法的好处:①通过一个__set方法就可以给类里面多个不同的成员变量赋值或者访问②访问方式跟没用封装之前的访问方式一样没有变。③当别人使用这个类时,还是使用的没有封装前的访问方式进行访问,这样别人就不知道这个类有没有被封装,用来迷惑对方。

    //__get和__set方法一般用来在封装里面使用。

  • 相关阅读:
    webpack介绍 安装 常用命令
    npm常用命令
    jQuery 实现点击页面其他地方隐藏菜单
    :after伪类+content内容生成经典应用举例
    几分钟前 几小时前 几天前... 7个阶段
    JS — 获取4个不重复的随机验证码
    JS — 数组去重(4种方法)
    Spring IOC原理简析
    浅谈Linux下的五种I/O模型
    大型分布式网站架构技术总结
  • 原文地址:https://www.cnblogs.com/shandayuan/p/6831514.html
Copyright © 2020-2023  润新知