1.类和对象。
类是一类事物的描述。抽象,概念上的定义。
对象是实际存在的每个个体。也叫实例。对象是new出来的。$p = new Person();
2.属性
用来描述类中的数据元素。(也叫数据/状态)
修饰符(PHP5中必须修饰):public(公开,类的内外部读取修改),private(私有只在当前类中读取修改),protected(保护,能在这个类和类的子类中读取,修改)
属性的使用:引用变量符号"->"。在类的内部调用"$this->"。
属性的初值(PHP5中简单类型有8种):
A.数值类型
boolean布尔类型,interger整型,float浮点型(也称为double双精度浮点型),string字符串
B.符合类型
array数组,object对象
C.特殊类型
resource资源,NULL空
*指向对象的变量,是一个引用的变量。在这个变量里面存储的是指对象的内存地址。以用变量传值时,传递的是这个对象的指向。而非复制这个对象。
属性的扩充:$this指当前对象。$this->调用当前对象的属性或者方法。
3.方法:对对象的属性进行的操作成为对象的方法(也成为行为/操作)
过程,函数,方法。
过程:过程是编制程序时定义的一个语句序列,用来完成某种指定的操作。
函数:函数有返回值。
方法:在面向对象的概念中,类里的一段语句序列。
4.封装:将对象的状态信息(属性)和行为(方法)捆绑为一个逻辑单元的机制。
通过封装,声明私有,提供一个或多个公开方法实现对属性的操作,实现以下目的:
A.隐藏一个类的实现细节
B.防止对封装数据的未授权访问。
C.有利于保证数据的完整。
D.便于修改,增强代码的可维护性。
5.构造函数和析构函数
__construct();new时执行。
__disrtuct();销毁对象时执行。(垃圾对象回收时执行)unset()函数为销毁一个属性。
GC(Garbage Collector):垃圾销毁。
6.继承
让我们更容易的扩充和维护。
A.实现对类的复用.
B.使用已经定义的方法和属性。
C.继承而产生的类叫子类。
D.被继承的类叫父类,也叫超类。
E.PHP是单继承的。一对多,一个父类对多个子类。
F.子类不能继承私有属性和私有方法。
E.类的方法可以被继承,类的构造函数了也能被继承。
7.重写(override)
A.当父类的继承方法不满足要求,可以重写。此过程叫方法覆盖(override),也叫方法重写。
B.当对父类的方法进行重写时,子类的方法必须有与父类中对应的相应的方法名称。
C.在PHP5中不限制输入的参数类型,参数数量和返回值类型。
D.重写函数的访问函数不能大于父类。
F.不声明则为public权限.
*PHP5中连构造函数都是可以重写的!
8.this关键字
A.它的需求来自于:解决变量的命名冲突和不确定性问题,用$this来代表当前对象。
B.$this在构造函数中指向该构造函数所创建的对象。
C.类中使用当前对象的方法,必须用$this->来取值。
D.局部变量在作用域外,$this也没用。
E.甚至可用$this来引用$this.多用来引用另一个类的属性或函数.
9.parent::关键字
A.引用父类方法。
B.不直接的父类照样引用。
10.重载(overload)
A.同一个类中的方法名相同。
B.PHP5中不支持。
11.static变量,方法
A.修饰属性(静态属性,类属性),方法(静态方法,类方法)。
B.声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关。
C.不用实例化,使用::调用类属性和类方法,在访问控制允许的情况下。
D.类属性在内存中只有一份,为一个类中的所有实例所共用。
E.self::来访问当前类的静态成员。
F.静态属性与静态方法在类没有实例化时就可以直接调用。调用方式-类名::静态属性名。
G.静态的属性和方法,在类被调用时创建。
H.静态方法调用静态方法-类名::方法 or self::方法(建议后者)。
I.self::表示当前类的静态成员。$this指当前对象。
J.在静态方法中,不能调用非静态属性,$this也不能获取非静态属性值。
K.当类中有非静态方法被self::调用时,系统会自动将这个方法转换为静态方法。
12.设计模式之单件模式
A.用来解决:"如何让这个类只有一个实例?"的问题。
B.方法:将构造函数设置为private,使得构造函数只能在类的内部被调用,而外部不能调用。
C.外部访问:通过static方法,可以不经实例化就可以直接访问这个类。入口只有一个,每次调用作出判断。
相关代码:
13.final类,final方法和常量
A.用于类,方法前,不可被继承和覆盖,在不希望被继承和覆盖的类或方法中使用。
14.const
A.使用const定义一个常量,定义的常量不能被改变,定义时也不需要加$修饰符。
B.定义的常量名称一般都大写,如果使用多个单词,则用"_"链接。
C.使用起来类似静态变量,不同的是它的值无法被改变,若强行重定义会出错。我们使用“类名::常量名”来调用这个常量。
15.abstract类和abstract方法
A.修饰的类表示这个类是一个抽象类,修饰的方法为抽象方法。
B.抽象类不能被实例化,抽象方法只有方法声明,没有实现方法的内容。
C.单独一个抽象类是没有意义的。当被继承后,才能有意义。
D.抽象方法要用;结束,(PHP5.0和5.1支持静态抽象方法,5.2中只有接口可以拥有抽象方法),只有声明部分,没有"{}"方法体。包含一个
或以上的抽象方法的类必为抽象类。抽象类在子类中必须重写。
E.可以理解为抽象类/方法为类/方法的扩展。
F.可以存在抽象类对抽象类的继承,不能重写父类的抽象方法,目的为对抽象类的扩展。
相关代码:
16.设计模式之模版模式
A.抽象类的应用就是典型的模版模式
B.先声明一个不能被实例化的模版,在子类中依照模版实现具体的应用。
17.接口的定义与规范
A.接口(interface)是抽象方法和静态常量的定义的集合。
B.接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。
C.接口中没有其他类型的内容。
D.接口的定义:interface 接口名{}。
E.在接口中只有public权限,没有private或者protected,默认的也是public权限。
F.abstract与final修饰符也不能修饰接口中的抽象方法。
G.虽不建议在接口中使用静态抽象方法,但是却依然保留了静态抽象方法。
H.接口中可以定义静态常量,并且不用static修饰就是静态常量。
18.实现接口
A.类实现接口要使用implements。并且要实现其中的抽象方法。一个类可以实现多个接口。接口的意义在于多态。
B.一个类可以实现多个接口。只要使用,将多个接口链接起来就可以。
C.一个接口可以继承自另外的接口。PHP5是单继承,但是接口很特殊,一个接口可以继承自多个接口,并且是继承父接口的静态常量属性和抽
象方法。
D.接口和接口之间的使用继承关键字extends。类实现接口必须实现其抽象方法,使用实现关键字implements。
相关代码:
19.类型提示
A.PHP是弱类型语言,向方法传递参数是不太区分类型。
B.原始类的型的类型判断函数:is_numeric(),is_bool(),is_int(),is_float(),is_inerger(),is_numeric(),is_string(),is_array()和
is_object。
C.在定义方法参数时,同时定义参数的对象类型。可以提高安全性。定义方法参数时,要使用类型提示,若类型不是对象,要用代码进行类型
建议。
相关代码:
20.多态
A.一个类拥有其父类和已实现的接口的身份。
21.instanceof运算符
A.用来判断当前的实例是否可以有这样一个形态。
B.格式:实例名 instanceof 类名
相关代码:
22.使用接口与组合模拟多继承
A.通过组合模拟多重继承