类的封装
封装性是面向对象编程中的三大特性之一,封装性就是把对象的成员属性和成员方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含如下两个含义:
1.把对象的全被成员属性和全部成员方法结合在一起,形成有一个不可分割的独立单位(即对象)。
2.信息屏蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。
封装的目的:为了让类更安全。
封装的做法:
1.类里面的成员变量(和成员方法)做为private
2.使用成员方法来间接访问成员变量(和做为private的成员方法)
3.在该方法里面加限制条件
例:
class Ren
{
private $name;
private $sex;
private $age; //年龄必须在18-50之间
function __construct($v)
{
$this->sex = $v;
}
//魔术方法set
function __set($n,$v) //根据$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->__set("age",20);
$r->__get("age");
php类里面不允许出现同名方法
函数重载
//在类里面写多个同名方法来实现不同功能
/*public string Show()
{
return "显示";
}
public string Show(string a)
{
return a+"显示";
}
public string Show(string a,string b)
{
return a+b+"显示";
}
public string Show(int b)
{
return b+"数字";
}
//1.函数名必须相同
//2.参数个数不同或参数类型不同
//例子:求两个圆之间的阴影面积
/*$maxr = 20;
$minr = 10;
$mj = 3.14*$maxr*$maxr - 3.14*$minr*$minr;
class Yuan
{
//代表半径
public $r;
function __construct($n)
{
$this->r = $n;
}
//求面积的方法
function MJ()
{
return 3.14*$this->r*$this->r;
}
}
$r1 = new Yuan(20);
$r2 = new Yuan(10);
$mianji = $r1->MJ()-$r2->MJ();*/
//例子:计算器
$a = 10;
$b = 5;
$jia = $a+$b;
$jian = $a-$b;
$cheng = $a*$b;
$chu = $a/$b;
class jisuan
{
public $a;
public $b;
function __construct($n,$m)
{
$this->a = $n;
$this->b = $m;
}
function jia()
{
return $this->a+$this->b;
}
function jian()
{
return $this->a-$this->b;
}
function cheng()
{
return $this->a*$this->b;
}
function chu()
{
return $this->a/$this->b;
}
function quyu()
{
return $this->a%$this->b;
}
}
$j = new jisuan(10,5);
$j->quyu();