• 面向对象(二)封装性


    <?php
    
    //面向对象三大特性
    //封装
    //目的:让类更加安全,不让外界直接访问类里面的成员变量
    //做法:
    
    
    //1.把成员变量、方法做成私有的
    class Person 
    {
    	public $name;
    	private $sex;
    	private $age;
    	
    	function __construct($name="",$sex="男",$age=10)
    	{
    		$this->name=$name;
    		$this->sex=$sex;
    		$this->age=$age;
    	}
    	
    	function run()
    	{
    		echo $this->name."在走路时,".$this->leftleg()."再".$this->rightleg();
    	}
    	private function leftleg()
    	{
    		return "迈左腿";
    	}
    	private function rightleg()
    	{
    		return "迈右腿";
    	}	
    }
    $p=new Person("张三");
    var_dump($p);
    echo $p->name."<br>";
    //echo $p->sex."<br>"; //属性被封装,无法在类外面被调用
    //echo $p->age."<br>";  //属性被封装,无法在类外面被调用
    //echo $p->leftleg();    //属性被封装,无法在类外面被调用
    //echo $p->rightleg();    //属性被封装,无法在类外面被调用
    echo $p->run();
    
    
    
    
    //2.做一个方法来实现变量取值或赋值,在方法里面加限制条件
    class Person 
    {
    	public $name;
    	private $sex;
    	private $age;
    	
    	function __construct($name="",$sex="男",$age=10)
    	{
    		$this->name=$name;
    		$this->sex=$sex;
    		$this->age=$age;
    	}
    	
    	//普通方法   只能给某一个属性进行赋值和取值
    	function setage($a) //给age赋值的函数
    	{
    		if($a>1&&$a<50)
    		{
    			$this->age=$a;
    		}
    	}
    	function getage()  //取age值的函数
    	{
    		return $this->age;
    	}
    	
    	//魔术方法   可以给任何一种属性进行赋值和取值
    	function __set($n,$v) //给类里的私有成员赋值:$n代表属性名,$v代表属性值,$this->$n=$v
    	{
    		if($n=="age")
    		{
    			if($v>1&&$v<50)
    			{
    				$this->$n=$v;
    			}
    		}
    		else
    		{
    			$this->$n=$v;
    		}
    	}
    	function __get($n)  //取类里的私有成员属性的值,$this->$n
    	{
    		return $this->$n;
    	}
    }
    $p=new Person("李四","女",25);
    var_dump($p);
    
    //普通方法:
    echo "赋值年龄".$p->setage(40)."<br>";
    echo "取值年龄".$p->getage();
    var_dump($p);
    
    //魔术方法
    echo "赋值性别".$p->sex="人妖"."<br>";
    echo "取值性别".$p->sex;
    var_dump($p);
    

      

  • 相关阅读:
    JavaScript寄生组合式继承分析
    常用的css命名规则:
    jshint配置(js检查)
    当页面关闭或刷新时提示用户
    Ionic 开发环境搭建
    VS Code前端开发利器-常用快捷键
    Uploadify 上传插件引起Chrome崩溃解决方法
    “全栈工程师”的尴尬
    redis集群升级,数据迁移及校验
    K-means
  • 原文地址:https://www.cnblogs.com/zst062102/p/5443322.html
Copyright © 2020-2023  润新知