PHP面向对象特性-封装
2017-07-23 16:59
381 查看
封装
1、字段的作用域
public 公共的(类外可以访问)
private 私有的(类内可以访问)
protected 受保护的(类内和子类可以访问,类外不可以)
2、创建使用私有的字段,这样外部就无法访问
3、属性操作-私有字段的赋值与取值
4、拦截器
当类外的对象直接调用私有字段时,会跟着去检查是否有拦截器
如果直接对$_name进行赋值,那么__set方法就会拦截住,就不会报错了
注意:__set() __get()方法被私有时,还是可以执行
因为现在的指针已经在类内了
5、常量
在类中定义常量,用来表示不会改变的值,对于该类实例化的任何对象来说,常量值在对象的整个生命周期中都不变。
6、静态类成员
eg1:非静态,输出结果:123 123
eg2:静态成员 输出结果 123 456
7、静态方法
8、instanceof 关键字
使用它可以确定一个对象是类的实例,累得子类,还是实现了某个特定的接口,并进行相应的操作。
1、字段的作用域
public 公共的(类外可以访问)
private 私有的(类内可以访问)
protected 受保护的(类内和子类可以访问,类外不可以)
2、创建使用私有的字段,这样外部就无法访问
class Computer{ private $_name = '联想'; private $_model = 'LX'; //通过公共方法来访问私有字段 function run(){ echo $this -> _name; } }
3、属性操作-私有字段的赋值与取值
class Computer{ private $_name; //必须写一个对内入口,对私有对象进行赋值 public function setName($_name){ $this->_name = $_name; } //必须写一个对外入口,才可以取到 public function getName(){ return $this->_name; } } $computer = new Computer(); $computer -> setName('dell'); echo $computer -> getName();
4、拦截器
当类外的对象直接调用私有字段时,会跟着去检查是否有拦截器
如果直接对$_name进行赋值,那么__set方法就会拦截住,就不会报错了
class Computer{ private $_name; private $_model; private $_cpu; //采用拦截器进行赋值和取值 //赋值 public function __set($_key,$_value){ $this->$_key = $_value; } //取值 public function __get($_key){ return $this->$_key; } } $computer = new Computer(); $computer->_name = '联想'; $computer->_cpu = 'i7'; $computer->_model = '四核'; echo $computer->_name; echo $computer->_cpu; echo $computer->_model;
注意:__set() __get()方法被私有时,还是可以执行
因为现在的指针已经在类内了
5、常量
在类中定义常量,用来表示不会改变的值,对于该类实例化的任何对象来说,常量值在对象的整个生命周期中都不变。
class Computer{ const NAME = 'DELL'; } echo Computer::NAME;
6、静态类成员
eg1:非静态,输出结果:123 123
class Computer{ public $_count=0; public function __add(){ $this->_count++; } } $computer1 = new Computer(); $computer1->__add(); echo $computer1->_count; $computer1->__add(); echo $computer1->_count; $computer1->__add(); echo $computer1->_count; $computer2 = new Computer(); $computer2->__add(); echo $computer1->_count; $computer2->__add(); echo $computer1->_count; $computer2->__add(); echo $computer1->_count;
eg2:静态成员 输出结果 123 456
class Computer{ public static $_count=0; public function __add(){ self::$_count++; } } $computer1 = new Computer(); $computer1->__add(); echo Computer::$_count; $computer1->__add(); echo Computer::$_count; $computer1->__add(); echo Computer::$_count; echo "<br>"; $computer2 = new Computer(); $computer2->__add(); echo Computer::$_count; $computer2->__add(); echo Computer::$_count; $computer2->__add(); echo Computer::$_count;
7、静态方法
class Computer{ public static $_count = 0; public static function __run(){ self::$_count++; } } Computer::__run(); Computer::__run(); Computer::__run(); echo Computer:: $_count;
8、instanceof 关键字
使用它可以确定一个对象是类的实例,累得子类,还是实现了某个特定的接口,并进行相应的操作。
class Computer{ } $computer = new Computer(); echo ($computer instanceof Computer); //computer 是 Computer的实例。
相关文章推荐
- PHP基础----面向对象相关特性----11成员方法和类方法
- 黑马程序员—java面向对象总结(2)—面向对象封装特性
- PHP基础----面向对象相关特性----12类的继承与方法重写
- 深入PHP面向对象、模式与实践——高级特性(1)
- 深入PHP面向对象、模式与实践——高级特性(4)
- php 面向对象之封装
- 黑马程序员------oc之面向对象特性 封装、多态、继承等
- 面向对象三大特性 之 封装(C#)
- 黑马程序员----面向对象设计的封装、继承、多态特性
- 面向对象特性-封装
- PHP面向对象笔记 —— 113 封装概念
- PHP面向对象的程序设计封装--php高级最详细教程
- PHP面向对象深入研究之【高级特性】
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
- PHP面向对象特性-多态
- PHP面向对象高级特性 PSR-0规范
- C# 面向对象特性 封装 继承 多态
- 深入PHP面向对象、模式与实践——高级特性(2)
- PHP面向对象特性
- 1.面向对象三大特性,封装,继承,多态