OOP:面向对象编程(灵活性、重要性、扩展性)
OOA:面向对象分析
OOD:面向对象设计
- 总
- 定义类:定义方法和属性
- 初始化类:调用类中的属性和方法
- 特殊对象:$this
- 构造方法:__construct()
- 构造方法是对象创建后第一个自动调用的方法
- 如果没有显示的声明,则对象会存在一个没有参数列表且对象成员为空的构造方法;
- 显示声明之后,则默认的构造方法不存在
- 每次使用new关键字会自动调用构造方法
- 析构方法:__destruct()
- 对象被销毁前自动调用析构方法
- 析构函数不能带有任何参数
- private与public:共有私有
- 私有属性的访问与设置:建立公有接口
- 几个方法:
- _set()为私有属性赋值,却不能访问私有属性
- _get()外部对象可以通过该方法获得私有属性的值
- _isset()测定类属性是否存在
- _unset()将私有属性删除
- 继承:extends(单继承于多继承)
- 关键字和方法:final static const instanceof _toString() _call()
- static定义属性,多个类共享
- 类外访问-类名::属性名 类名::方法名()
- 类中访问-self::属性名 self::方法名()
- final定义类不能被继承,方法不能被覆盖
- static定义属性,多个类共享
- 抽象类与接口:interface implements
- 抽象类是特殊的类,而接口是特殊的抽象类
- 抽象类
- 抽象方法:没有方法体,只有方法名
- l 如果一个类中所有的方法是都是抽象方法,那么这个抽象类可以声明成接口
- 接口是一个特殊的抽象类,接口中只能有抽象方法和常量
- 接口中的抽象方法只能是public,可以省略,默认也是public的
- 通过implements关键字来实现接口
- 不能使用abstract和final来修饰接口中的抽象方法。
- 命名空间:基本使用,名称术语在php中允许在子类中调用父类的同名方法,使用::符号进行操作
- 命名空间
- 防止命名的冲突 — namespace
- 调用不同空间的方法
- 类和对象
- 对象是具体存在的事物,对象是由属性(变量)和方法(函数)组成的
- 类是具有相同属性和行为的一组对象的集合
- 创建类
- 类是由属性、方法、常量组成的,也可以说
- 类成员有:属性、方法、常量
- 类的命名规则
- 以字母、下划线开头,后面跟的是字母、数字、下划线
- 不能用PHP关键字做类名
- 类名不区分大小写(变量名区分,关键字、类名不区分大小写)
- 类名用帕斯卡命名法(大驼峰单词的首字母大写)
- 类的属性
- 属性本质就是变量
- 通过->调用对象的成员 对象名->属性名 对象名->方法名()
- 声明一个人类的属性:
- 关键字public , private, static
- 成员方法(方法的本质就是函数)
- 方法前面public是可以省略的,如果省略,默认就是public的。
- 属性前面的public不能省略
- 实例化对象
- 传递参数
不传参
- $person1, $person2,$person3相当于再内存中开辟了三分空间
- 对象在内存中的分配
- 栈空间:储存小,访问快
- 堆空间:动态扩张,大数据。(字符串,数组,对象)
- 数据段:全局,静态变量
- 代码段:只允许读操作,不允许写
- 对象成员的访问(使用运算符 -> 来完成对象对成员的访问)
- 特殊对象成员$this($this表示当前对象的引用,也就是是或$this保存的当前对象的地址)