zoukankan      html  css  js  c++  java
  • 面向对象的三大特性之封装

    //面向对象的三大特性:封装、继承、多态
    
    //1、封装-使用private
    //目的:保证类的安全性,类的成员不能被直接访问
    /*class ren
    {
        private $name;
        private $sex;    
        private $age;//访问修饰符(public private protected)
    }
    $r=new ren();
    var_dump($r);//访问不到任何内容,但不报错
    echo $r;//访问报错,因echo不具备输出此对象的功能,echo只能输出具体内容,
    */
    //访问方法--间接访问
    //1.造成员方法来操作变量
    /*class ren
    {
        private $name;
        private $sex;    
        private $age;
    //赋值
        public function setage($a)
        {    
            if($a>16 && $a<30)
                {
                 $this->age=$a;
                 //echo $this->age;
                }
            }
    //取值
        function getage()
        {
        return $this->age;
        }
    }
        $r=new ren();
        $r->setage(20);
        echo $r->getage();
        //每一个成员变量都需要写赋值和取值方法,比较麻烦,一般不用
    */
    //2.使用__set()/__get()方法
    /*class ren
    {
        private $name;
        private $sex;
        private    $age;
    //赋值
    function __set($n,$v)
    {    
        if($n=="age")
        {
        $this->$n=$v;
        //echo $this->$n;
        }
        else
        {
        $this->$n=$v;    
        }    
    }
    function __get($n)
    {
        return $this->$n;
    }
    }
    $r=new ren();
    $r->age=10;//注意写法
    $r->name="男";
    echo $r->age;//注意写法
    echo $r->name;*/
    
    //构造函数---初始化变量,即在我创建对象的时候,成员变量的值就已经存在了,比如:在我创建这个人的时候,他的性别就已经存在了
    //一般拿到一个面向对象先看构造函数
    class ren { private $name; private $sex; private $age; function __construct($s,$n,$a) { $this->sex=$s; $this->name=$n; $this->age=$a; } } $r=new ren("男","huqun","25"); var_dump($r);

     练习

    设计一个类:包含$a,$b,求和的方法,求乘积的方法,可以对变量进行初始化,$a,$b必须大于0小于100。

    class shu
    {
        private $a;
        private $b;
        

      function sum() { echo $this->a+$this->b; } function ji() { echo $this->a*$this->b; } function __construct($a,$b) { $this->a=$a; $this->b=$b; } function __set($n,$v) { if($n=="a"||$n=="b") { if($v>0 and $v<100) { $this->$n=$v; } } else { $this->$n=$v; } } function __get($n) { return $this->$n; } } $r=new shu(5,5); $r->a=1; $r->b=5; echo $r->ji(); //var_dump($r); echo $r->b; echo $r->a;
  • 相关阅读:
    求n的元素的最大最小值
    输出一个集合的所有子集,从长到短
    树的各种操作java
    几个笔试题目总结
    小知识不断补充
    java、C语言实现数组模拟栈
    LearnHowToThink
    Android中的this、Activity、Context等
    Android已上线应用开源分享中(第二季)
    Android已上线应用开源分享中(第一季)
  • 原文地址:https://www.cnblogs.com/jinshui/p/5563697.html
Copyright © 2011-2022 走看看