• 面向对象的三个特性:封装


    面向对象的三个特性:封装、继承、多态

    //1.封装
    目的:让类更加安全,不让外界直接访问类的成员

    //具体做法
    【1】将成员设为私有:访问修饰符

    class ren
    {
    	[var $age;]
    	private $age;
    }
    	$r=new ren();
    	echo $r->age;//访问不到
    

      

    【2】造成员方法来操作变量

    class ren
    {
    	private $age;
    	//制造方法去给变量$age赋值
    	public function SetAge($a)
    	  {
    		if($a>18 and $a<50)
    		{
    			$this->age=$a;
    		}
    	  }
    	function GetAge()
    	{
    		return $this->age;
    			
    	}
    
    }
    $r=new Ren();
    $r->SetAge(18);//赋值[间接操作变量]
    var_dump($r);
    

      

    【3】使用类里面提供的__get()&__set()方法

    class Ren 
    {
    	private $age;
    	//赋值的方法
    	function __set($n,$v)
    	{	
    		if($n=="age")
    		{
    			if($v>18 and $v<50)
    			{
    				$this->$n=$v;	
    			}
    		}
    		else
    		{
    		  $this->$n=$v;
    		}
    	}
    	//取值方法
    	function __get($n)
    	{
    	  return $this->$n;
    	}	
    
    }
    $r=new Ren();
    $r->age=20;
    var_dump($r);
    

      

    //构造函数:在造对象的时候对成员进行初始化的
    【1】执行时间特殊,造对象的时候自动执行
    【2】写法特殊 __construct
    研究类第一要看的就是构造函数,

    class Ren
    {
      function __construct($s)
      {
        $this->sex=$s;
      }
    }
    $r=new Ren("男");//调用方法
    var_dump($r);
    

      

    练习题

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

    class yunsuan
    {
        private $a;
        private $b;
    
        function __construct($a,$b)
        {
            $this->a;
            $this->b;
        }
        function __set($n,$v)
        {
            if($v>0 and $v<100)
            {
                $this->$n=$v;
            }
        }
        function __get($n)
        {
            return $this->$n;
        }
        function sum()
        {
            return $this->a + $this->b;
        }
        function ji()
        {
            return $this->b * $this->a;
        }
    }
    
    $r=new yunsuan(1,2);
    
    $r->a=3;
    $r->b=5;
    echo ($r->a+$r->b);
    echo $r->ji();
    

      

  • 相关阅读:
    前端页面的防抖与节流
    vue3.0 响应式原理
    cssBEM命名规范及常用CSS class 命名
    vue2.x 响应式原理
    npm 相关命令
    Node之 fs
    Node 之 Buffer
    Node之path
    Node之process
    Node.js 如何处理 ES6 模块
  • 原文地址:https://www.cnblogs.com/pangchunlei/p/5562179.html
Copyright © 2020-2023  润新知