Rainie999 发表于 2017-3-28 13:10:00

面向对象php知识汇总

成员控制:
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 NetCardimplements pci{
       Function start(){
              Echo “网络连接可以使用”;
}
Function shop(){
       Eco “网络断开,失去连接!”;
}
}
Class soundCard implementspci{
       Function start(){
              Echo “听见声音 dud u  du”;
}
Function shop(){
       Eco “声音停止!”;
}
}
Class viewCardimplements pci{
       Function start(){
              Echo “可以看到图像”;
}
Function shop(){
       Eco “图像消失!”;
}
}
Class mainBoard{
       Function usePci($pci){
       $pci->start();
       $pci->shop();
}
}
Class person{
       Function install(){
       $mb=newmainBoard();
       $nc=newnetCard();
$sc=new soundCard();
$vc=new viewCard();
       $pci=$nc;
       $pci=$sc;
       $pci=$vc;
       $pci->start();
       $pci->shop;
}
}
$p=new person();
$p->install();
页: [1]
查看完整版本: 面向对象php知识汇总