PHP 面向对象 (九)面向对象三大特征

面向对象三大特征

  • 抽象性 将通用的数据和方法抽离出来形成一个抽象类

  • 多态性

    1. php本身就是天生的多态语言
    2. 当一个函数接收到不同对象时,会自动的判断并调用对应的方法
    3. 多态利于类的维护和扩展
  • 继承性

    作用: 将通用的数据和方法抽离出来形成一个抽象类, 解决代码复用,便于维护

  1. 方法重载
    1. php不能使用传统的重载方法
    2. 传统的方法重载

      function getName($name)

      function getName($name, $params)

  2. 属性重载
    1. 当给不存在的属性赋值时,类虎自动动态创建相对应的属性
    2. 禁止属性重载,public function set(){} 方法里面什么都不写
  3. 方法重写
    要求方法名和参数都一样,参数类型也一样,子类不能缩小父类访问权限
  4. 属性重写
    子类不能缩小父类访问权限
  5. 继承本质
    子类与父类之间建立了查找关系
抽象类

说明:当方法不确定具体实现功能的时候,可以定义为抽象类

  • 细节
    1. 抽象类不能实例化
    2. 抽象类可以有非抽象属性和方法
    3. 含抽象方法的类必须定义为抽象类
    4. 如果一个非抽象类继承了抽象类,必须实现抽象类的所有方法
接口

作用:解决抽象类单一继承的问题,可以多继承,解决代码复用问题

  • 细节
    1. 接口中的方法都是抽象方法,但不需要使用abstract来修饰
    2. 需实现接口中所有的抽象方法
    3. 接口中不能有普通成员属性,但是可以有常量
    4. 接口可以多继承
    5. 面向接口编程 (后面补充)
final关键字

作用:保护类不被继承,及类方法不被重写

  • 细节
    1. 当类不希望被继承时,可以定义为final类
    2. 当类方法不希望被重写时,可以定义为final方法
    3. final不能修饰成员属性
    4. final方法不能被重写,但是可以被继承
面向对象编程的相关技术
  1. 对象克隆技术 防止克隆,定义私有的魔术方法__clone()
  2. 对象遍历 foreach
  3. php的内置标准类 new stdClass
  4. 数据类型转对象和对象转数组的说明
    1. (object)$name; 强制类型转换
    2. (array)$obj;对象转数组后,私有变量还是不能直接访问
  5. 对象序列化和反序列化
    1. 序列化 serialize() 对象转换为字符串 会调用 __sleep()魔术方法
    2. 反序列化 unserialize() 已序列化的字符串转对象 会调用 __wakeup()魔术方法
总结
  1. 类中只有属性和方法
  2. 普通成员方法可以访问静态属性也可以访问非静态属性
  3. 对象 instanceof 类名 用于判断对象是不是某个类的对象实例
  4. 对象的连用
  5. 所有都是基于一次请求操作

复制代码,即可运行。 谢谢你的浏览,如有错误,欢迎指正哈!!!

本作品采用《CC 协议》,转载必须注明作者和本文链接
写的不好,就当是整理下思绪吧。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!