面向对象的三个特性:封装、继承、多态
//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();