Heim > php教程 > php手册 > Hauptteil

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

WBOY
Freigeben: 2016-09-11 11:19:39
Original
840 Leute haben es durchsucht

面向对象

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

类的概念

是一种抽象的概念,是具有相同语义定义对象的集合(具有相同属性和方法的集体),使用具体的类是不可行的,只能实例化。拿汽车举例,汽车的设计图纸就是类,汽车是对象。设计中重点是类的创建
 
现实生活中类的概念
万物皆为对象如我们使用的具体电脑就是对象,那电脑就是一个类。你去幼儿园接孩子,你说接孩子,人家一定不给你(除非认识你和知道你的孩子是谁),你要说出你孩子的名子,你的孩子就是具体的对象,孩子就是一个类
 
类名书写规范
     类名首字母大写一个类定义在一个文件中,并以.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>
 
 
 
 
 
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!