Rumah  >  Artikel  >  php教程  >  PHP中面相对象对象的知识点整理

PHP中面相对象对象的知识点整理

WBOY
WBOYasal
2016-09-11 11:19:39891semak imbas

面向对象

万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性.
__________________________________________________________________

类的概念

是一种抽象的概念,是具有相同语义定义对象的集合(具有相同属性和方法的集体),使用具体的类是不可行的,只能实例化。拿汽车举例,汽车的设计图纸就是类,汽车是对象。设计中重点是类的创建
 
现实生活中类的概念
万物皆为对象如我们使用的具体电脑就是对象,那电脑就是一个类。你去幼儿园接孩子,你说接孩子,人家一定不给你(除非认识你和知道你的孩子是谁),你要说出你孩子的名子,你的孩子就是具体的对象,孩子就是一个类
 
类名书写规范
     类名首字母大写一个类定义在一个文件中,并以.class.php做为文件名结尾
 
__________________________________________________________________
  对象
对象句柄
用于区分不同对象。对象创建后,在内存中获取一块存储空间,储存空间的地址就是对象的标识或句柄
 
属性
在类中定义的变量,即为成员属性,用于描述对象静态特性的数据。如人的姓名,性别,首字母小写
 
方法
函数定义在类中即为成员方法,用于描述对象动态特性的操作行为,方法名不区分大小写,不可重名,首字母小写
对象的生命周期
创建后,生命周期开始,当程序结束后或程序员清除对象后即销毁,PHP会自动销毁对象
 

对象的生命周期

1 程序执行完成后,PHP运行回收机制,删除内存的对象
2 删除所有
对象的引用后,对象即为垃圾,回收机制自动删除垃圾
 

 对象产生的步骤

1 在内容中开辟出对象的空间
 
2 执行构造方法
 
3 将对象的引用地址返回

对象的内存分布:

1 对象引用被放到了“栈内存”里(栈存放固定内容)
 
2 对象是放在“堆内存”里(堆存放可变内容)
 
3 而静态成员则放到了“数据区”,在第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享
 
4 函数和方法放在代码区

 
 

面向对象的特性

抽象性
把一类对象的共有属性和方法抽象出来,形成类,这种思考方式为抽象
 
封装性:
把成员方法和成员属性封装到类中,隐藏属性和方法,隐藏方法实现的细节,通过public protected private final static  限定类成员的访问权限,数据被保护在内部,只有通过被授权的成员方法才可以操作。尽可能的对成员进行封装
 
继承extends:
可以使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类。extends 关键字 实现继承关系
 
多态:
子类继承父类,通过对父类方法重写实现多态
__________________________________________________________________________________________

访问修饰符(作用域描述符)

 
publlic 公有
在类的内部与外部或子类都可以访问,是最开放的权限
private 私有的
定义类的属性和方法,在类的内部可以访问,在类的外部或子类都不可以访问
protected 受保护的
定义类的属性和方法,在类的内部或子类可以访问,类的外部不可以访问
模块设计
强内聚(功能尽量在类的内部完成),弱耦合(开放尽量少的方法给外部调用)。例:公司销售接项目,具体工作交给公司内部程序员,设计人员,服务器管理人员协同完成
 
__________________________________________________________________________________________
 

static静态属性与静态方法

需要一个数据对象只服务于类,即类内部可用,对外不可用时。建对象是极其耗费资源的,因此当一个方法具有比较强的公用性的时候,没有必要为了调用这个方法而重新再生成该类的实例。定义的方法或变量在程序第一次加载时即驻留内存,程序结束释放。
静态方法不能被非静态方法重写,构造方法不允许声明为static的
static变量:
通过static声明的成员变量为静态变量或叫类变量,是该类的公共变量,在第一次使用时即生成,对于该类的所有对象只有一份,是属于类的,不是属于对象的。static变量是属于类而不属于对象,可以在任何地方通地类来访问,是类的全局变量,类创建时即存入内存。对多个对象来说,静态数据成员只存储一处,可以节省内存。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值。
static方法:
用static声明的方法为静态方法或叫类方法,执行该方法时不会将对象引用传给函数,所以我们不能访问非静态成员,只能访问静态方法或静态变量。只能使用关于类的方式如self   static  parent等。使用时不用生成对象即可执行
 
$this     self::    parent::
 
$this    
是当前对象的引用, 一般出现在方法里,用于获取类的成员属性,或执行类的成员方法
self ::
对本类的引用 ,用于获取当前类的表态成员属性或静态成员方法self::run()
parent ::
对父类的引用,调用父类的方法或属性。
_________________________________________________________________________________

构造方法&析构方法

构造方法__construct()
在创建对象时自动执行,没有返回值,用于执行类的一些初始化工作,如对象属性的初始化工作,PHP4中构造方法必须与类同名,php5中规定构造方法为__construct(),优点是不受类名的影响,如果不存在__construct  php搜索与类同名的方法自动执行。
可以在构造方法中传递参数,用于定义属性,在父类和子类都定义构造方法时,执行子类的构造方法
 
析构方法__destruct():
用于对象在内存中被销毁时自动执行的方法,不带任何参数
_________________________________________________________________________________

对象 final const

 
  1. <span class="com">//类里面的方法不能修改</span>
  2. <span class="com">//类不能被继承</span>
  3. <span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">class<span class="pln"> souji <span class="pun">{</span></span></span></span></span></span>
  4. <span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">public<span class="pln"> $pinpai<span class="pun">;<span class="pln"> <span class="com">//报错</span></span></span></span></span></span></span></span>
  5. <span class="pln"> <span class="kwd">final<span class="pln"> <span class="kwd">function<span class="pln"> congdian<span class="pun">()<span class="pln"> <span class="pun">{<span class="pln"> <span class="com">//无效</span></span></span></span></span></span></span></span></span></span>
  6. <span class="pln"> echo $this<span class="pun">-><span class="pln">pinpai <span class="pun">.<span class="pln"> <span class="str">"手机通过10v电压来充电"<span class="pun">;</span></span></span></span></span></span></span>
  7. <span class="pln"> <span class="pun">}</span></span>
  8. <span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">function<span class="pln"> kaijidonghua<span class="pun">()<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span>
  9. <span class="pln"> echo <span class="str">">>>"<span class="pun">;</span></span></span>
  10. <span class="pln"> <span class="pun">}</span></span>
  11. <span class="pun">}</span>
  12. <span class="kwd">class<span class="pln"> moto <span class="kwd">extends<span class="pln"> souji <span class="pun">{</span></span></span></span></span>
  13. <span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">()<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span>
  14. <span class="pln"> <span class="com">// $this->pinpai = "摩托罗拉";</span></span>
  15. <span class="pln"> $this<span class="pun">-><span class="pln">congdian<span class="pun">();</span></span></span></span>
  16. <span class="pln"> <span class="pun">}</span></span>
  17. <span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">function<span class="pln"> kaijidonghua<span class="pun">()<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span>
  18. <span class="pln"> echo <span class="str">"摩托罗拉商标"<span class="pun">;</span></span></span>
  19. <span class="pln"> <span class="pun">}</span></span>
  20. <span class="pun">}</span>
  21. <span class="pln">$li <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> moto<span class="pun">();</span></span></span></span></span></span>
  22. <span class="pln">$li<span class="pun">-><span class="pln">kaijidonghua<span class="pun">();</span></span></span></span>
  23. <span class="com">//定义常量</span>
  24. <span class="pln">define<span class="pun">(<span class="str">"WEBNAME"<span class="pun">,<span class="pln"> <span class="str">"文豆"<span class="pun">);</span></span></span></span></span></span></span>
  25. <span class="kwd">function<span class="pln"> aa<span class="pun">(){</span></span></span>
  26. <span class="pln"> echo WEBNAME<span class="pun">.<span class="str">"专注PHPWEB开发"<span class="pun">;</span></span></span></span>
  27. <span class="pun">}</span>
  28. <span class="pln">aa<span class="pun">();</span></span>
  29. <span class="kwd">class<span class="pln"> caiwu<span class="pun">{</span></span></span>
  30. <span class="pln"> <span class="kwd">const<span class="pln"> suilv<span class="pun">=<span class="lit">0.05<span class="pun">;</span></span></span></span></span></span>
  31. <span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">(){</span></span></span></span>
  32. <span class="pln"> echo WEBNAME<span class="pun">;</span></span>
  33. <span class="pln"> <span class="pun">}</span></span>
  34. <span class="pln"> <span class="kwd">function<span class="pln"> kaigonzi<span class="pun">(<span class="pln">$xingming<span class="pun">,<span class="pln">$gongzi<span class="pun">){</span></span></span></span></span></span></span></span>
  35. <span class="pln"> $gongzi <span class="pun">=<span class="pln"> $gongzi<span class="pun">-<span class="pln">$gongzi<span class="pun">*<span class="kwd">self<span class="pun">::<span class="pln">suilv<span class="pun">;</span></span></span></span></span></span></span></span></span></span>
  36. <span class="pln"> <span class="kwd">return<span class="pln"> $xingming<span class="pun">.<span class="str">"的工资是:"<span class="pun">.<span class="pln">$gongzi<span class="pun">.<span class="str">"元"<span class="pun">;</span></span></span></span></span></span></span></span></span></span>
  37. <span class="pln"> <span class="pun">}</span></span>
  38. <span class="pun">}</span>
  39. <span class="com">/*员工类*/</span>
  40. <span class="kwd">class<span class="pln"> yuangong<span class="pun">{</span></span></span>
  41. <span class="pln"> <span class="kwd">private<span class="pln"> $xingming<span class="pun">;<span class="com">//姓名</span></span></span></span></span>
  42. <span class="pln"> <span class="kwd">private<span class="pln"> $gongzisu<span class="pun">;<span class="com">//工资数</span></span></span></span></span>
  43. <span class="pln"> <span class="kwd">function<span class="pln"> __construct<span class="pun">(<span class="pln">$xingming<span class="pun">,<span class="pln">$gongzisu<span class="pun">){</span></span></span></span></span></span></span></span>
  44. <span class="pln"> $this<span class="pun">-><span class="pln">xingming <span class="pun">=<span class="pln"> $xingming<span class="pun">;</span></span></span></span></span></span>
  45. <span class="pln"> $this<span class="pun">-><span class="pln">gongzisu <span class="pun">=<span class="pln"> $gongzisu<span class="pun">;</span></span></span></span></span></span>
  46. <span class="pln"> <span class="pun">}</span></span>
  47. <span class="pln"> <span class="kwd">function<span class="pln"> kaizi<span class="pun">(){</span></span></span></span>
  48. <span class="pln"> $caiwu <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> caiwu<span class="pun">();</span></span></span></span></span></span>
  49. <span class="pln"> <span class="kwd">return<span class="pln"> $caiwu<span class="pun">-><span class="pln">kaigonzi<span class="pun">(<span class="pln">$this<span class="pun">-><span class="pln">xingming<span class="pun">,<span class="pln"> $this<span class="pun">-><span class="pln">gongzisu<span class="pun">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span>
  50. <span class="pln"> <span class="pun">}</span></span>
  51. <span class="pun">}</span>
  52. <span class="pln">$lisi <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> yuangong<span class="pun">(<span class="str">"李四"<span class="pun">,<span class="pln"> <span class="str">"6000"<span class="pun">);</span></span></span></span></span></span></span></span></span></span></span>
  53. <span class="pln">echo $lisi<span class="pun">-><span class="pln">kaizi<span class="pun">();</span></span></span></span>
 
 
 
 
 
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn