成员控制:
1.public 没有限制
2.protected 只有类的内部和继承类内部可以访问
3.private 只有类的内部可以访问
泛化 :包含关系 a kind of 苹果是水果的一种 空三角型箭头
聚合(组合): 整体部分关系 a part of 车轮是车的一部分
聚合分为 无 共享(空菱形) 复合(实心棱形) 三种关系
类名 : 一般首字符大写 然后每个单词首字符大写连接
类方法参数 参数数量没有达到声明时的数量时出错 参数过多忽略后面的多余参数
__destruct()析构函数
封装性
就是将对象内部的属性或方法封装自己对象的内部 private
信息隐蔽 保留有限的接口
__set() __get() __isset() __unset() 封装常用的四个方法
在某一时刻自动调用的方法
在直接访问/取值私有方法的时候调用__get() 达到对私有属性的直接访问的目的
对私有属性直接赋值的时候调用 __set()
判断一个变量、对象里边的成员,是否存在 isset() 对私有的属性是判断不了的 在类里边加上__isset()就可以判断了 在判断私有属性是否存在的时候调用__isset()
Unset()删除变量,在删除类的私有属性的时候调用__unset()
继承:extends 对原有类的扩展
Java 和 php 单继承 C++是可以多继承 父类之间可以没有关系的
私有的属性和方法不能继承过来 私有成员在子类也不能使用
方法的重载(覆盖) 定义相同的方法名 本来在php里面函数不能重载 方法重载指的是父类和子类方法的重载 父类的方法在子类重写 覆盖掉
Parent::父方法()可以调用父类被覆盖的方法 不用全部重写
访问类型(访问控制) private protected public
Final static const
Final 只能用来定义类和方法 作用:1.使用final定义的类不能被继承 2.定义的方法不能被重载 覆盖。
Static 静态的 共享,减少内存使用 直接用类名访问 类名::成员 self代表本类名
用静态声明的方法不能使用非静态的成员
Const关键字 在类里面定义成员属性为常量的关键字 类名::成员属性 只能修饰属性
只有在声明的时候给初始值,以后不能赋值更改 没有¥符号 常量一般定义成为大写
Defined();不是在对象里面声明常量
__tostring()自动输出字符串
__clone()
__call($funName,$argus) 调用不存在的方法是自动调用
__autoload()自动加载
对象串行化
就是吧对象转为二进制的字符串,serialize() 反串行化,把二进制字符串转化为对象unserilize()函数,
在串行化的时候,1.对象在网络中传输的时候 2.将对象写入文件或者写数据库的时候
部分序列化 自动调用的方法__sleep()在对象序列化的时候调用
__wakeup() 反序列化的时候调用 反序列化得时候对属性初始化
抽象类与接口
抽象方法 在类里面没有方法体的方法就是抽象方法 没有大括号以及其中的内容,在方法名的后面加一个分号结束,另外还要在方法声明是加上一个关键字“abstract” abstract function fun1();
抽象类 如果一个类里面有一个方法是抽象的,这个类就是抽象类,这个类就要使用“abstract”关键字来修饰。
注意:抽象类不可以实例化对象
用途:抽象类就相当一个规范,必须在子类重载抽象方法。方法名称是固定的
接口:特殊的抽象类 关键字“interface” 所有的方法都是抽象的 所有的属性必须是常量,所有的成员都必须是共有的。也是一种规范
接口的子类 使用关键字implements==extends 类是单继承的,可以继承一个类,实现一个接口 如 class a extends b implements c{} 一个类可以实现多个类、遵循多个规范
可以使用抽象类去实现一个接口的部分方法。 接口和接口之间也使用继承 extends
多态的应用:一段程序实现多个对象的功能。
Pci
Interface pci{
Function start();
Function stop();
}
Class NetCard implements pci{
Function start(){
Echo “网络连接可以使用”;
}
Function shop(){
Eco “网络断开,失去连接!”;
}
}
Class soundCard implements pci{
Function start(){
Echo “听见声音 dud u du”;
}
Function shop(){
Eco “声音停止!”;
}
}
Class viewCard implements pci{
Function start(){
Echo “可以看到图像”;
}
Function shop(){
Eco “图像消失!”;
}
}
Class mainBoard{
Function usePci($pci){
$pci->start();
$pci->shop();
}
}
Class person{
Function install(){
$mb=new mainBoard();
$nc=new netCard();
$sc=new soundCard();
$vc=new viewCard();
$pci=$nc;
$pci=$sc;
$pci=$vc;
$pci->start();
$pci->shop;
}
}
$p=new person();
$p->install();