开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段:面向对象基础总结】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/711/detail/12673
面向对象基础总结
内容介绍:
一、总结
一、总结
接下来对面向对象的基础做一个总结
1、面向对象编程是一种核心的编程思想,这种核心是“万物皆对象”即所有的都被看成一个对象。
与面向过程编程思想的本质区别是:面向过程编程思想有事务操作的主体,每一次操作都是由明确的对象来执行,而不是只需要过程来执行即可。
2、面向对象思想的本质是将数据(用属性保存数据)、数据操作(用函数施行)进行的一次二次封装(形成类的概念),而往后的所有操作都必须由类或者类产生的对象进行调用
3、面向对象核心关键字
(1)类:class,是一种结构主体,不会执行,它是从具体的实体中抽离出来的共性的代码,所以也叫抽象。
(2)类成员:类结构中能够直接定义的成员
①属性(property):存储数据的变量
②方法(method):加工数据,数据操作的逻辑
③类常量(const):保存不可变的数据,存储固定数据的内部常量(const定义)
(3)实例化:new,其实就是类结构产生对象的过程
(4)实例:instance,也就是产生的一个具体的对象
4、访问修饰限定符:限定被修饰成员的方位位置(所有类成员都能被访问)
操作过程中,对象访问成员时也就是类定义了成员时候,需要对其进行控制。
(1)pablic:公有,允许类内类外访问,表示不限定访问区域
(2)protected:受保护,只有关联类内部可以访问,表示限定范围为关联类内部(本质是方法内部,关联类需要学习继承)
(3)private:私有,表示限定范围为自己类内部(内部方法内)
5、类内部对象:$this
访问过程中会产生对象,而对象在外面访问时候,内部有时候是无法访问的,因为有访问修饰限定符的限定,所以有时候需要内部加工。
(1)普通方法内部,代表来访对象
(2)因为在类内部,所以不论任何访问修饰限定符限定,都可以访问
6、魔术方法:自动调用的方法
在某些特殊情况下,会自动调用的方法。
(1)构造方法:_construct(),用于对象初始化资源,对象实例化后自动调用
(2)析构方法:_destruct(),对象销毁资源,销毁时对象自动调用
(3)克隆方法:clone(),对象被克隆后,克隆对象自动调用
如果不需要调用,可以将其私有化,但是一般析构方法不会私有化,因为对象一定会被销毁。
7、对象传值:对象可以赋值给其他对象,而且是引用传值,不会产生新对象
不论是通过变量还是通过形参传递给其它函数的方法,都不会产生新对象。
8、范围解析操作符: ::,用于类直接访问成员的符号
主要与对象进行对抗,因为对象访问的是属性和方法,而类访问的是自己的成员。
(1)类访问类专属成员:类常量(静态属性和静态方法)
(2)对象也可以使用该符号访问类成员(不建议)
9、静态成员:使用 static 关键字修饰的成员,用来给类访问的成员(对象也能访问)
如果是使用 static 关键字修饰的成员,不要用对象访问,应该用对象访问。
(1)静态成员:静态属性和静态方法
(2)静态成员在编译(类加载到内存)时初始化,而且会将其放在类里面,所以不用产生对象即可访问(是高效率的访问)
(3)静态属性不会出现在对象的内存空间
注意,能够使用静态访问就尽量不要使用非静态。但是对象一定只能使用非静态,因为一个类产生 n 个对象,有不同的状态,这是静态无法完成的。
10、self关键字:为了让类内部用来代表类名访问类成员的一种关键字。
(1)用于 self与范围解析操作符结合访问:self:类成员
(2)self可以代替类名在类内部进行实例化:new self
能够保证类结构在外部修改名字时候不用修改代码。
11、类的加载:类的使用的前提是类在内存中必须存在
(1)手动加载:比较繁琐,使用前写好加载路径
(2)自动加载:并不是真正的自动加载,只是提前写好代码,在内存找不到要用的类的时候自动执行。
①autoload()函数:魔术函数,在函数内部写好加载方式,内部实现加载机制。
②自定义函数+spl autoload_register(函数:与魔术函数类似(建议使用)
12、对象克隆:从已有对象产生新对象的过程叫做克隆。如果允许克隆,就使用魔术克隆方法,不允许克隆就私有化,即:
(1)防止克隆:私有化克隆魔术方法
13、利用基础去做一些类的开发或者实现一些业务需求的开发。
多关注业务,懂得如何根据业务划分类,然后慢慢掌握类内部应该如何定义成员(属性、方法、静态和非静态等的定义)去解决需求问题,从而使用面向对象思想基本语法面对开发问题。
以上就是关于面向对象基础的学习。