• PHP 面向对象


    面向过程

    类和对象
    对象:任何东西都可以称为对象,类实例化出来的东西
    类:对所有同类的对象抽象出来的东西

    定义类:

    class Ren
    {
        public $Name;    //成员变量
        protected $age; 
        private $height;
        var $sex;       //一般不要给成员变量赋值
        function Run()  //成员函数(方法)
        {
            echo "这个人正在奔跑!";
        }
        function Say()
        {
            echo $this->Name."正在说话!";
        }
    }

    使用类

    //1.实例化对象
    $r = new Ren("男");
    //2.给成员变量赋值(调用成员变量)
    $r->Name = '张三'; //给对象的Name赋值
     $r->age;        //取值
    //3.调用成员方法
    $r->Say();    //执行成员方法

    访问修饰符
    1.如果要加访问修饰符,需要去掉var
    2.三种:public公有的 protected受保护的 private私有的
    3.如果不加访问修饰符,默认是public

    1 public $Name; //     公有的
    2 protected $age; //  受保护的
    3 private $height; //  私有的
    4 var $sex; // 

    $this引用
    $this代表该对象(哪个对象调用),不是代表该类

    构造函数
    1.写法特殊:__construct()
    2.执行特殊:在造对象的时候最先执行
    作用:对对象进行初始化操作

     1 class Ren
     2 {
     3     public $Name;
     4     protected $age; 
     5     private $height;
     6     var $sex; 
     7     
     8     function __construct($s) //构造函数
     9     {
    10         $this->sex = $s;
    11     }
    12 }
    13 $r = new Ren("男");
    14 var_dump($r);

    析构函数,对象销毁前执行

     1 class Ren
     2 {
     3     private $name;
     4     private $sex;
     5     private $age;
     6     public function Say()
     7     {
     8         echo "hello";
     9     }
    10     function __destruct() //析构函数,对象销毁前执行
    11     {
    12         echo "该对象销毁了!";
    13     }
    14 }
    15 
    16 $r = new Ren("男");
    17 $r->Say();

    面向对象三大特性
    封装
    目的:让类更加安全,不让外界直接访问类里面的成员变量
    做法:

    1.把成员变量做成私有的
    2.做一个方法来实现变量取值或赋值,在方法里面加限制条件

    继承

    多态

    赋值:

    1.普通方法

     1 class Ren
     2 {
     3     private $name;
     4     private $sex;
     5     private $age;
     6     function SetAge($a)   //给age赋值的函数
     7     {
     8         if($a>10 && $a<50)
     9         {
    10             $this->age = $a;
    11         }
    12     }
    13 }
    14 
    15 $r = new Ren();
    16 $r->SetAge(40);

    2.魔术方法

    class Ren
    {
        private $name;
        private $sex;
        private $age;
        function __set($name,$value) //对类里面的私有成员进行赋值的魔术方法
        {
            if($name == "age")
            {
                if($value>20 && $value<50)
                {
                    $this->$name = $value;
                }
            }
            else
            {
                $this->$name = $value;   //赋值
            }
        }
    $r = new Ren();
    $r->age = 40;

    取值:

    1.普通方法

    class Ren
    {
        private $name;
        private $sex;
        private $age;
        function GetAge() //取age的值
        {
            return $this->age;  //返回一个age的值
        }    
    $r = new Ren();
    echo $r->age;

    2.魔术方法

     1 class Ren
     2 {
     3     private $name;
     4     private $sex;
     5     private $age;
     6     function __get($name) //对类里面的私有成员进行取值的魔术方法
     7     {
     8         return $this->$name;
     9     }
    10 }
    11 $r = new Ren();
    12 echo $r->sex;

    使用类里面提供的魔术方法也可以实现对私有成员的操作
    __set()特点:会自动执行,把赋值语句中的变量名作为第一个参数,把变量值作为第二个参数调用__set方法
    __get()特点:会自动执行,把取值语句中的变量名作为参数调用__get方法

  • 相关阅读:
    Poj 2406--Power Strings(KMP)
    杭电2682--Tree(Prim)
    杭电1827--Summer Holiday(SCC + 缩点)
    杭电2181--哈密顿绕行世界问题(Dfs)
    杭电1269--迷宫城堡(强连通分量)
    南阳21--三个水杯(Bfs)
    杭电1203--I NEED A OFFER!(01背包)
    e.send和next(e)的区别
    python中yield与return的用法与区别
    迭代器
  • 原文地址:https://www.cnblogs.com/zk0533/p/5441850.html
Copyright © 2020-2023  润新知