面向对象的三大特征:封装 继承 和 多态
1、4个魔术方法 __get __set __isset __unset
对象的继承特性
几个关键字 final const static 关键字
封装:
在面向对象的使用过程中经常用到,某些成员禁止的对象的外部进行访问,这种情况下需要对成员进行封装.常用的关键字private.
成员属性私有化:
private $sex=’值’;
成员方法的私有化:
private function 方法名(){}
私有化特征:
1.一旦某个成员被私有化(private),那么在对象的外部不能够被修改和访问
2.私有化成员在对象的内部可以使用$this 进行访问
3.声明关键字private 不能够和var 关键字同时使用
访问私有成员的错误提示:\
//访问私有成员属性
Fatal error: Cannot access private property Jingjing::$sex in D:\AppServ\www\72\object2\Jingjing.class.php on line 39
访问私有成员方法
Fatal error: Call to private method Jingjing::sa() from context '' in D:\AppServ\www\72\object2\Jingjing.class.php on line 40
魔术方法3 __get
触发时机: 在访问一个私有化成员属性的时候自动触发.
作用: 1.屏蔽错误 2.返回私有成员属性的值
参数: 1个参数
返回值:可有可无 (如果有返回值就是最后成员属性的值)
注意事项: 对非私有化成员无效
魔术方法4 __set
触发时机:在对私有成员属性进行修改的时候自动触发.
作用:1.屏蔽错误 2. 对私有成员属性进行设置值
参数:2个 1 修改的私有成员属性名 2 要修改的值
返回值:不需要
注意事项:对非私有成员无效,在进行操作之前一定要进行判断.
魔术方法5 __isset()
触发时机:对私有化成员属性 进行isset判断时自动触发
作用: 代替对象外部的isset 对私有成员进行isset判断
参数:1个 判断的私有成员属性名
返回值: true或false 一般使用isset(属性)作为返回值
注意事项: 对非私有成员无效,返回值尽量使用isset判断的结果
魔术方法 6 __unset()
触发时机:对私有成员属性进行unset操作的时候自动触发.
作用:代替对象外部的unset 对私有成员进行unset操作
参数:1 要删除的私有成员属性名
返回:不需要
注意事项:对非私有成员无效.在进行操作之前一定要进行判断.
2、继承特性:
在面向对象的开发过程中,2个类之间可能存在代码大部分重复的情况,为了解决这种问题,引入继承概念,一个类继承另一个类之后就具备该类的所有成员(目前这么记即可,私有无法继承)
父类:被其他类继承的类称之为父类,也叫做基类
子类:继承其他类的类成为子类,也叫做派生类
继承的实现方式:
class 子类名 extends 父类名{
//子类独有的成员属性
//子类独有的成员方法
}
继承操作的特征和注意事项:
1.子类继承父类,即具备父类中的虽有成员属性和方法(私有除外)
2.子类可以具备自己独有的成员属性和方法
3.构造方法可以被继承,注意传参问题,继承而来的构造方法需要多少参数,实例化对象时必须传入指定的参数
4.在类中具有继承关系的类,子类中可以重载父类中的方法
5.构造方法也允许重载.而且在子类中的构造方法中可以使用parent::__construct() 来调用父类的构造方法,为了把继承而来的属性初始化. (关键字 parent代表父类)
6.在子类中可以使用parent::$成员属性名来访问父类中的成员属性(有条件限制:必须是static声明的属性)
7.在子类中可以使用parent::成员方法名()访问父类中的成员方法(有条件显示:必须是static声明的方法)
8.逻辑问题:继承的时候不要瞎继承,一定要具有合理的逻辑关系,不能使用人类来继承鸟类,永远不会变成鸟人的~~~
关于PHP的继承方式:
封装关键字:
private 私有化
protected 受保护的
public 公开的
关于var 关键字的问题:
var 关键字属于public关键字的一种,和public 的功能类似,公开的不受保护和封装的.
var 关键字只能修饰成员属性不能用于修饰成员方法
var 一般只用在学习当中,其余情况全部建议使用public 代替(public在修饰成员方法时,可以忽略不写,推荐 写一下)
继承等级的问题(继承和关键字的问题)


3、封装关键字
private 1
protected 2
public 3
子类中重载父类的方法,子类方法的封装等级要大于等于父类方法封装等级
其他关键字
final final最终的意思
作用:
1.在class前使用该关键字修饰类 当前类不允许被继承
2.使用final修饰的成员方法,禁止被重载
const 常量(非重点)
1.在类中声明常量需要使用const关键字
2.声明常量不允许使用$.
3.声明常量要在声明时赋值
常量的访问:
类内部:
类名::常量名
self::常量名
类的外部:
类名::常量名
在子类中:
类名::常量名
parent::常量名
$this 表示当前对象 必须实例化才会有该关键字
parent 表示父类
self 表示当前类