zoukankan      html  css  js  c++  java
  • PHP面向对象 三大特性

    1.封装

    目的:就是为了让类更加安全

    做法:

     1 要将成员做成私有的

     2 在类里面做方法来间接访问成员变量

     3 在方法里面加控制

    简单的:

    第一个魔术方法:给变量赋值的        __set

    function __set($n,$v)    第一个参数变量名,第二个参数变量值

    {  

                    if($n=="age" )                       加限制条件

                {

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

                      {

                          $this->$n =$v;

                      }

                 }

                else

                  {

                        $this->$n =$v;

                  }

            }

     

    $r->age =30;      自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数

    第二个魔术方法:用来取变量值的   __get

    function __get($n)

    {

             return $this->$n;    直接返回

    }

    echo $r->sex;   写这个的时候可以自动调用__get(),将变量名当做参数,没有提示,自己写出来用

    $r = new Ren("男");

    $r->__set("age",30);

    $r->name ="张三";   也可以

    繁琐的:

    class Ren

    {

             public $code;       人员代号

             private $name;    人员姓名

             private $sex;        人员性别

             private $age;       人员年龄     做成了私有的,怎么实现访问

             function __construct($s)       构造方法,用来初始化性别

            {

                  $this->sex =$s;

            }

            造一个修改年龄的方法

            function SetAge($a)

           {

              if($a>18 && $a<50);   加控制

                  {

                  $this->age=$a;

                  }

           }

      造一个获取age值得方法

            function GetAge()

            {

                 teturn $this->age;

            }

    }

     

    造对象

    $r = new Ren("男");

    $r->SetAge(20);   

    var_dump($r);

    例:

    class Dog

    {

          public $name;

          function Jiao()

            {

                 echo $this->name."在叫";

             }

           function SetName($n)

           {

                 $this->name =$n;

                  return $this;      <-----   加了       连续去调    后期很多都是这种调用方式,返回该对象,继续调下一个

           }

    }

    $d = new Dog();

    $d->SetName("旺财")->Jiao();     

    2.继承

    1 父类

    2 子类    可以继承父类的一切

    特点:单继承,一个子类只能有一个父类,一个父类可以派生多个子类

    class Ren

    {

           public $name;

           function Say()

          {

               echo $this->name."正在说话";

          }

    }

    class China extends Ren              extends    <----    实现继承

    {

             子类对父类的方法进行重写

             function  Say()

              {

                    怎么在子类里调父类的成员

                    parent::Say();        父类里面的内容拿过来            

                    echo "你好";     

               }

             function Run()

             {

                   echo $this->name."正在跑步";

             }  

    }        

    class America extends Ren

    {

              echo "hello";

    }

    $c = new China();

    $c->Say();

    $a = new America();

    $a->Say();

    var_dump($c);  

    override  重写 

    overload  重载

    可以使类里面的某个方法产生多种效果,根据传入的参数不同可以执行不同的逻辑

    重载也是多态的一种,编译多态

    例:

    echo rand(0,10); 随机数

    echo date("Y-m-d");   生成当前时间

    3.多态

    概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同,称为多态

    条件

    运行多态,在运行的时候出现的

    1 要有继承

    2 父类引用指向子类实例

      父类引用:定义了一个变量  ,类型必须是父类的类型

                      $r = new Ren();

    3 要有重写

    4 调重写的方法

  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/zqseven/p/6163378.html
Copyright © 2011-2022 走看看