zoukankan      html  css  js  c++  java
  • oop总结


    OOP的介绍
      定义
        面向对象程序设计


      面向对象的优点
        分工明确
        提高开发效率
        提高项目的灵活性
        提高项目的可扩展性


      特点
        封装
        继承
        多态


    对象的操作
      实例化一个对象
        new 类名();
        new 类型;


      定义类
        成员属性 修饰符
        成员方法 修饰符


      对象和类
        对象  类的实例     例如:房子
        类   对象的抽象  例如:房子的图纸


      对象实例化 和 调用
        new 类名() $this->


      对象在内存中的存储
        对象名(地址)保存在栈中 先进后出
        对象内的代码保存在堆里 先进先出

     


    封装性


      定义  把成员属性和成员方法 设置为非公有,就称为封装性


      特点
        被封装的属性/方法 无法在外部调用
        只能通过$this-> 内部调用


      优点
        重用性
        可读性


      属性的封装
        实现 访问控制
        提升开发效率的同时,提醒我们对象封装的底线

     


    继承


      定义  子类继承父类的成员属性与成员方法


      类继承的应用
        作用  

          通过继承可以简化类的定义
          方便扩展,扩展功能可以写在子类中,不会对原有父类产生影响
          方便升级,通过继承不但包含了旧的方法,还同时添加了新的功能


        特点
          单继承
          一个父类可以被多个子类继承
          一个子类只能继承一个父类


        子类重写父类的方法
          定义跟父类方法重名的就可以重写
          子类中调用父类方法 parent::funName()


    魔术方法
        __construct()
            可选参数,对象被实例化时自动触发
            作用  给属性赋初值,用于打开资源
        __destruct()
            无法传参,属性销毁之前自动触发
            作用  关闭构造方法中打开的资源
        __get($param)
            一个参数,在外部使用非公有属性是自动触发
            作用  在外部访问非公有属性
            注意  __get()必须是public
        __set($params,$values)
            两个参数,在对象外部设置非公有属性时自动触发
            作用  在对象外部设置封装属性
            注意  __set()必须是public
        __isset($param)
            一个参数,在对象外部检测封装属性是否存在时自动触发
            注意  使用empty()判断非公有属性时,必须配合__get()一起使用
        __unset($param)
            一个参数,用unset()销毁一个非公有属性时自动触发
            注意  销毁公有属性时,由于可以直接访问,所以不需要再设置该魔术方法
        __clone()
            在该对象被克隆的时自动触发
            注意  如果封装该魔术方法,会导致该对象不能被克隆
        __toString()
            用echo或print输出对象时自动触发
            作用  必须return一个string,一般用于对象的描述信息
        __invoke()
            把对象当做函数调用时自动触发
        __call($funName,$params)
            两个参数(方法名,值)当调用对象不存在的方法时自动触发
            作用  当用户调用了不存在的操作时,用来做友好的提示
        __callStatic($funName,$params)
            两个参数(方法名,值)当调用对象不存在的方法时自动触发
            作用  当用户调用了不存在的操作时,用来做友好的提示
        __sleep()
            当对象被串行化时,自动调用
        __wakeup()
            当已被串行化的对象被反串行化时,自动调用
        __autoload()
            当new实例化一个不存在的类时,则自动调用此函数“__autoload()”,并将类名作为参数传入此函数
            作用  帮助判断是否存在需要加载的类

    关键字


        final
            可以用于修饰类和方法,最终版本,不能被重写
            作用  提高代码的安全性,可读性
            注意  不能使用final来修饰成员属性
        static
            用于修饰属性和方法,静态属性,静态方法,不需要实例化
            作用  类中的几个方法没有太大联系时,可以声明为静态方法
            注意  静态属性是共享的。也就是new很多对象也是共用一个属性
                由于静态修饰后,每次访问都是访问的同一个,所以不存在继承问题
                在一个类的方法中若没有出现$this的调用,默认此方法为静态方法
                静态方法中不可以使用非静态的内容。就是不让使用$this
        const
            在类的内部 定义 常量
                内部 self::Name
                外部 类名::Name
            作用  给该类中的方法设置参数选项
        instanceof
            判断当前对象类是否属于某个类的类型 返回true/false
        abstract
            声明抽象方法和抽象类 有抽象方法的类就是抽象类
        串行化
            serialize()    串行化
            unserialize()    反串行化
            作用  把当前状态下的对象 连同对象格式与属性值的变换 转换为字符串格式
                对象是保存在内存中,寿命通常随着生成该对象的程序终止而终止,而串行化后的对象就可以实现永久存储,可以用做数据缓存
        json
            json_encode()  转化为json格式
            json_decode()  将被转化成json函数的数据还原
            作用  数组的永久存储
                便于不同语言之间的数据传输(接口)
        stdClass
            快速得到一个对象
            注意  凡是用 new stdClass()的变量都不可以出现$a->test()这种方式的使用
        类型约束
            约束方法和函数的传输类型
            作用  数组 array $param
                类 类名 $param
        namespqce
            前不允许有任何的php代码


    接口


        定义  一个语法,和平时熟知的API接口没有一点关系,使用interface定义
        interface  声明接口时使用
        特点
            接口中的方法,必须全是抽象方法(所有无需abstract声明)
            接口的所有成员实现,必须是常量
            所得权限必须是public
            声明接口不使用class,使用interface
            接口可以被类继承实现全部方法,也可以被抽象类继承实现部分方法
            接口继承不能用extends,用implements
        inplements实现接口
            一个类在继承另一个类的同时,使用implements实现一个接口(一定要先继承在实现),可以实现多个接口,逗号隔开就好

     


    异常处理


        错误处理
            错误级别
              parse error 解析错误
              fatal error 致命错误
              waring 警告
              notice 提示
              strict 规范建议
            自定义错误处理
              set_error_handler('funName')
              设置用户定义的错误处理函数,只能接收 waring 和 notice 错误


        异常处理
            一种可扩展,易维护的错误处理统一机制,提供了一种新的面向对象的错误错误处理方式
            异常处理方式  完全交给系统自带的系统自带的异常处理类    Exception 是所有PHP异常的基类

     


    命名空间
        定义  命名空间就是逻辑层面的目录结构 相当于在代码中分了文件夹
        作用  在不同的目录中可以有相同的文件名 在不同的命名空间中可以有相同的名字
        基本规则
            命名空间的定义语句前面不能有任何PHP代码
            命名空间不能控制普通变量的访问,不同空间仍旧可以传递普通变量的值
            如果使用{}定义命名空间 那么括号外不能有任何代码
        限定名称
            非限定名称 test(); 当前空间下
            限定名称 A est(); 相对路径 ./A/test()
            完全限定名称 A est(); 绝对路径 从全局命名空间出发
        常量
            __NAMESPACE__当期所在空间的空间名

    如若发现错误,请务必联系: yanghuihui1996@gmail.com。吾必改之。
  • 相关阅读:
    C#中RDLC合并两个列的值
    C#中RDLC控制某列的显示隐藏
    VS中RDLC提示类型不一致
    C#中使用NPOI提示(找到的程序集清单定义与程序集引用不匹配)
    Web项目访问在C盘的图片(不在当前项目路径下的图片)
    【转】主成分分析(PCA)
    【转】协方差的意义
    [转]hpp.h与.h的区别
    SPEC-RFC3261总述
    (转载)VoLTE简介
  • 原文地址:https://www.cnblogs.com/yanghuihui/p/6971224.html
Copyright © 2011-2022 走看看