码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象的特性:封装

时间:2016-12-12 11:55:54      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:public   com   函数   private   alt   else   code   images   技术   

1.封装 ****
目的:为了使一个类更加安全

做法: ****
1.将成员变量变为私有的
2.再类中做方法来间接访问成员变量
3.在方法中加入控制条件

 //一个成员变量还是可以的,但是不适用于多个成员变量(即可写也可读)

class Ren
{
	public $code;	//人员代号
	public $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()
	{
		return $this->age;	
	}
}

//造对象
$r=new Ren("男");
$r->SetAge(60);  /条件是18-50之间的年龄,60超出了,所以显示的null
var_dump($r);

技术分享

//对于多个变量就可以使用下面的方法

class Ren
{
	public $code;	//人员代号
	public $name;   //人员姓名
	private $sex;    //人员性别
	private $age;    //人员年龄
	
	//构造函数:用来初始化性别
	function __construct($s)
	{
		$this->sex=$s;
	}
	
	//__set()魔术方法,给变量赋值
	function __set($n,$v)   //固定要有两个参数:变量名称,变量的值
	{
		if($n=="age")  
		{
			if($v>18 && $v<50)  //限制条件
			{
			  $this->$n = $v;	
			}
		}
		else
		{
		  $this->$n = $v;		
		}
	}
	
	//__get()魔术方法,取变量值
	function __get($n)    //一个变量名
	{
		return $this->$n;	
	}
	
}

//造对象
$r=new Ren("男");
$r->age=70;      //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
$r->name="zha";     //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数
echo $r->sex;    //自动调用__get()方法
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("1")->Jiao();  //连续调对象

技术分享

面向对象的特性:封装

标签:public   com   函数   private   alt   else   code   images   技术   

原文地址:http://www.cnblogs.com/nuanai/p/6163762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!