面向对象1
面向对象Xue Xi Object Oritened- XXOO
1.学些面向对象的主要内容:
1)面向对象的语法的学习(相对简单)
2)面向对象的编程思想的学习(难一点)
2.OO 面向对象
1)OOA 面向对象的分析方法
2)OOD 面向对象的设计方法
3)OOI 面向对象的实现方法
4)OOP 面向对象的程序设计(OOA->OOD->OOI)
3.基础概念关系
1.)面向对象中最重要的两个概念
A)类:是一种思想上的未实现的东西(想象性的)
a)对事物概念的描述------------空调(泛指所有的)
b)对事物的操作流程------------说明书
B)对象:是一种思想上的已经实现的东西(实体化的)
a)所有事物的实体表现---------一个空调(特指一个实体空调)
b)对事物的操作流程的实施过程------操作说明书
2)类和对象的关系
A)对象是由类产生的一个实际的事物或者操作流程,这个过程叫做实例化(实际例子 的实现过程)
B)类是由多个对象抽象总结而来的,这个抽象总结的过程叫做抽象化
3)类的组成成分
A)对特征的描述(成员属性)
B)对功能的描述(成员方法---函数)
4.类的书写规则
1.)文件名
A)函数的文件名 XXX.func.php (函数库)
B)类的文件名 XXX.class.php (单类文件)
C)类的文件名一般与类名相同
D)类中class之后类名的驼峰命名法:每个单词的首字母大写
2)类的书写规则
A)类必须有CLASS关键字开始
B)Class关键字之后跟类名,类名通常和文件名相同
C)类名之后直接跟{}即可
3)成员属性的书写规则
A)声明成员属性必须使用关键字 var或者public、private等
B)声明成员属性时,可以赋值,可以不赋值
C)声明成员属性时,不能赋一个函数值
D)成员属性的最大作用是为成员方法提供一个桥梁作用。
4)成员方法的书写规则(同函数)
A)声明成员方法时需要使用function 关键字
B)声明成员方法可以传入参数,可以不传入参数
C)声明成员方法时,方法允许存在返回值!
D)类中只能出现成员属性和成员方法,不允许出现其他代码,否则会有语法错误~!
5.对象的生成和使用方法:
1)一般情况下,类是无法直接使用的,需要将类实例化为对象之后才可以使用。
2)实例化对象的方法:
A)变量=new 类名;
B)变量=new 类名()
3)使用对象的成员属性 对象变量->成员属性名
4)使用对象的成员方法 对象变量->成员方法名()
5)$this 关键字 在当前对象中的成员方法中,调用当前对象中的成员属性
$this 表示当前的对象 如果代码中具有$this,那么该类必须实例化才能使用
6.魔术方法:一种特殊的函数
1).构造方法: __construct() 或者和类名同名的方法
触发时机:在对象实例化的时候自动触发
作用:初始化成员属性
参数:可以有,可以没有,取决于设定和逻辑
返回值:没有
注意:如果构造方法具有参数,且参数没有默认值,在实例化对象时,必须在类名()内添 加对应的实参值。
2.)析构方法 __destruct()
触发时机: 在销毁对象的时候自动触发(unset或者页面执行完毕)
作用:回收对象使用过程中的资源。
参数:没有
返回值:没有
7.面向对象的三大特征:封装、继承和多态
1)封装特性:在一个对象产生之后,对象的部分成员属性和成员方法逻辑上是不允许在对象外 部进行调用或者使用的,这事就是封装特性的由来.
2)封装关键字 private 私有化
3)Private的特征:
A)被private修饰的成员属性不能够在类的外部进行访问,可以再类的内部访问
B)被private修饰的成员方法也不能够在类的外部进行访问
C)Var和private只能选取一个(还包括public 和protected)
4)魔术方法3: __get()
触发时机:访问私有成员属性的时候自动触发
功能:1.防止报错 2.为私有属性访问提供后门
参数:1个 访问的私有属性名称
返回值:可以有,可以没有
4)魔术方法:__set()
自动触发: 设置私有成员属性值
功能:1.屏错 2.设置私有成员属性值
参数: 2 1私有成员属性名 2 要设置的值
返回值:无
5)魔术方法:__isset()
自动触发:对象外部isset检测私有成员属性时
功能: 1.代对象外isset检测,返结果
参数: 1个 1私有成员属性名
返回值:有 一般返回 isset(属性)结果
6)魔术方法: __unset()
自动触发:对象外部unset操作私有成员属性时
功能: 1.代对象外unset操作,返结果
参数: 1个 1私有成员属性名
返回值:无
9.面向对象的第二大特性:继承特性:
1)继承的格式:
Class 类名 extends 父类名{
//子类独有的属性和方法
}
2)概念:
父类: 被其他类继承的类------基类
子类: 继承其他类的类------派生类
3)特点:
A)子类具备父类中所有成员属性和方法(私有的除外)
B)子类可具有独有的属性和方法
C)子类允许方法覆盖父类方法------重载父类方法
D)魔术方法也可被子类继承
E)子类可重载父类构造方法,并且在构造方法中使用parent(父类名)::__construct()
F)按照规则继承
4)Php继承的特点和其他语言略有不同:PHP---单继承的语言 其他语言可多继承
5)三个封装关键字:Private 私有化封装; Public 公共封装; Protected 受保护封装
6)封装等级问题:
Private 1----------Protected 2-----------------Public 3
子类同名方法封装等级必须大于或者等于父类中同名方法的封装等级
Var 是封装关键词,用于测试和学习 Var = 50%public
Var 只能修饰成员属性 不可以修饰成员方法
7)Final 关键字
Final 意思 最终的 最后的
作用:A)修饰成员方法:禁止子类重载父类方法
B)修饰类:被final修饰的类无法被继承.
8)Const关键字
作用:在类中声明常量---------类中常量不归对象所有,而是归类所有
1.声明常量const关键字(大写)
2.需给常量赋值
3.访问方式:
a) 类外部--->类名::常量名
b) 类内部---->类名::常量名------>Self::常量名
Self 表示当前类 $this表示当前对象
9)Static 关键字
用static声明的都是静态成员-----------不归对象所有,而是归类所有。
1.static 修饰成员属性和成员方法
Static 声明的成员不归对象所有,而是归类所有,无对象时可以通过类来访问
2.按需声明静态成员------效率高
3.具有动态成员的方法不可以声明为静态成员方法。(没有$this)
4.如果方法中没有$this,那此方法实际就是一个静态的方法(版本>5.3.0请写Static关键字)
静态成员访问:类内部 类名::$静态成员属性名;---------------Self::$静态成员属性名
类名::静态成员方法名()---------------Self::静态成员方法名()
类外部 类名::$静态成员属性名;--------------类名::静态成员方法名()
对象->静态成员方法名()(一般不用)
对象的串行化 ---------将对象变成一个字符串的过程
作用:1.长久的保存对象 2.方便网传.
串行化操作: 变量=serialize(对象变量)
反串行化操作: 对象变量=unserialize(变量)
7.魔术方法__sleep()
触发时机:在对象进行串行化操作时
功能:指定需要串行化的成员属性.
参数:无
返回值: 返回一个数组类型,每个元素都是需要串行化的成员属性名.
8.魔术方法__wakeup()
触发时机:.在对象进行反串行化时
功能:.反串行化时自动修改部分成员属性值.
参数:无
返回值: 无
9.魔术方法 __tostring()
触发时机:对一个对象进行echo操作时
功能:简化操作或者为对象输出值
参数:无
返回值:必须有且必须为字符串类型.
10.魔术方法__clone()
触发时机:对对象进行克隆操作时
功能:修改克隆之后的对象的部分属性值.
参数:无
返回值:无
注意:对象的赋值默认就是引用赋值,不能通过赋值操作获取一个新的对象,获取新对象的操作应该使用克隆操作
格式: 变量=clone 对象变量
11.魔术方法__call()
触发时机: 调用了类中不存在的方法时
功能:1.屏蔽错误 2.为不存在的方法定义个一个功能.
参数:2个 1 不存在的方法名 2所有的实参组成的数组
返回值:可有可无(根据实际功能来看)
12.魔术方法__autoload()
触发时机: 当页面中需要一个 类而该类不存在时
功能:实现类的自动加载.
参数`1个 不存在的类名
返回值:没有
MVC架构
M Model 模型层 负责加工处理数据 返回结果
V View 视图层 负责接收信息和显示信息
C Control 控制器层 负责业务逻辑的处理
模块:m就是模块 简单的说就是控制器的类
操作:a 就是操作 简单的说就是控制器类的方法