oop三大特性--封装性
来源:互联网 发布:股票策略编程 编辑:程序博客网 时间:2024/05/16 17:30
http://www.cnblogs.com/zizhuyuan/archive/2011/06/13/2079905.html
/* * 封装性:面向对象三大特性之一 * * 1.就是把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节 * 访问权限修饰符 public protected private * private:私有的,用这个关键字修饰的成员,只能在对象内部访问(只有用$this访问) * * 属性可以封装: * 只要一个变量,需要在多个方法使用,就将这个变量声明为成员属性,可以直接在这个对象中的所有方法中使用 * * 成员属性,相当于这个对象中的全局变量 * * 成员属性都会在方法中使用,成员属性值的变化其实就是在改变方法的执行行为,也就是改变了对象的功能 * * 成员属性的值如果不正常,方法执行的功能叶就不正常 * * 作用:不需要在对象外部改变或读取它的值 * 1.封装 * 再提供一个公有的方法(经过方法对对象成员属性进行赋值和取值就可以控制) * * * 方法也可以封装 * * 作用: * 1.使用private修饰使其只能在内部使用 * * 2.一个类中有100个方法,封装了95个(为另外5个服务的方法),只有5个方法可以使用 * * 100个成员属性,都让取值,不可以改值;或者只可改值,不可获取值//此种情况下使用以下方法比较方便 * 和封装有关的魔术方法: * *__set();//是直接设置[私有的]成员属性值时,自动调用的方法 *__get();//是直接获取[私有的]成员属性值时,自动调用的方法 *__isset();//是直接使用isset()查看对象中私有属性是否存在时,自动调用这个方法 *__unset();//是直接使用unset()删除对象中私有属性时,自动调用的方法 * * * * * * * */class Person{//x封装成员属性,不需要在对象外部改变private $name;private $age;private $sex;private __unset($proName){unset($this->$proName);}//是直接查看对象中私有属性是否存在时,自动调用这个方法//__isset($proName)的使用,$proName代表属性名private function __isset($proName){return isset($this->$proName);//isset()返回是否存在}function __construct($name,$age,$sex){$this->name=$name;$this->age=$age;$this->sex=$sex;}//当获取私有的成员属性时,自动调用此方法private function __get($proName){//控制所获取的值if($proName=="age"){if($this-age>40)return $this->age-10;}return $this->$proName;}//当设置私有的成员属性时,自动调用此方法private function __set($proName,$proValue){//$proName表示成员属性名,$proValue表示成员属性值//控制设置范围if($proName=="age"){if($proValue > 100 || $proValue<0)return;}$this->$proName=$proValue;}//提供公有方法来设置成员属性的值function setAge($age){//控制年龄范围,增加安全性if($age > 100 || $age < 0 )return;$this->age=$age;}//提供公有方法来获取成员属性的值function getAge(){//控制获取年龄的范围if($this->age < 30)return $this->age;else if($this->age<40)return $this->age-5;else if($this->age<50)return $this->age;elsereturn $this->age-15;提供公有方法来}function say(){echo "我的名字:{$this->name},我的年龄:{$this->age},我的姓别:{$this->sex}<br>";//访问封装过的 run()方法$this-run();}private function run(){echo '111111111111<br>'}function eat(){}//析构方法function __destruct(){}}$p1=new Person("zhangsan",25,"男");$p2=new Person;$p3=new Person;//$p1->age=-50;//因为年龄在外部随意访问,所以成员属性药封装,才有安全性。$p1->setAge(30);//通过方法来设置成员属性德值$p1->getAge();//通过方法来获取成员属性德值//通过添加家魔术方法__set($proName,$proValue) __get($proName),就可以直接调用成员属性了$p1->say();//可以调用$p1->run();//私有的方法不能直接调用//删除$p1里面的nameunset($p1->name);//判断name是否存在if(isset($p1->name)){echo "存在<br>";}else{echo "没有这个成员 <br>";}
0 0
- oop三大特性--封装性
- Swift学习 OOP三大特性:继承、多态、封装
- Swift学习 OOP三大特性:继承、多态、封装
- oop三大特性--继承性
- OOP的三大特性
- 三大特性--封装
- 从重载与重写来看OOP的三大特性:继承、多态、封装。
- 面向对象三大特性---封装性
- java-三大特性之一封装性
- oop三大特性--【接口】与【多态】
- OOP(面向对象)三大特性
- (oop)面向对象三大特性
- 三大特性_封装
- java三大特性--封装
- 五、三大特性~封装
- java三大特性:封装
- C++三大特性 -- 封装
- OOP三大特性及几大设计原则
- Java开发之单例设计模式
- Spring+cxf 开发WebService
- 有错误较少的房间。
- PLSQL远端连接oracle数据库
- 最小二乘法(c语言实现线性,matlab进行拟合)及相关系数的求解
- oop三大特性--封装性
- refreshControl
- 0xff转十进制
- 一篇不错的v4l2入门文档
- 11g dataguard 下standby database的数据文件迁移
- 贪心算法 Problem D 1003 哈夫曼编码
- 使用命名空间标准
- 捕捉崩溃日志
- 前言