zoukankan      html  css  js  c++  java
  • 魔术方法、抽象类、接口 、面向对象设计模式 的解析

    一:魔术方法:

        1》构造方法:__construct()

           特点:new的时候自动调用,第一个调用

        2》析构方法:__destruct()

           特点:最后一个调用,清理内存,变量被销毁前调用,释放资源

          

        3》克隆方法:__clone()

           特点:当在类外出现clone 对象的时候调用克隆方法,会把你的属性和方法克隆出来

           防止克隆发放:把克隆方法改成私有的方法

        4》__toString()

           特点:在类外输出对象的时候自动调用的方法

           注意:__toString方法里必须return 字符串

       5》__get(1) 不存在或者权限不够的属性

           特点:当在类外调用不存在或者权限不够的属性的时候自动调用的方法

           权限不够:受保护的,私有的   不存在:未定义

        6》__set(2) 不存在或者权限不够的属性 改它赋的值

           特点:在类外给不存在或者权限不够的属性设置值的时候自动调用的方法

           注意:在__set()方法里 $this->不存在或者权限不够的属性 = 值

        7》__isset(1) 不存在或者权限不够的属性

           特点:在类外检测不存在或者权限不够的属性自动调用的方法

           出现:isset(属性名) empty(属性名)

        8》__unset(1) 不存在或者权限不够的属性

           特点:在类外出现销毁不存在或者权限不够的属性自动调用的方法

           出现:unset(属性名)

        9》__call(2) 不存在的方法名,往方法里传的数组

           特点:在类外访问不存在的方法的时候自动调用的方法

           第一个参数是不存在的方法名,第二个是传的数组

        10》自动加载类的方法:__autoload(1) 类文件名/类名

           特点:自动加载类文件

           注意:类文件名和类名相同

           比如说:类文件名:aa.class.php

                   类名:class aa{}

     

    二  抽象类、接口

     

    抽象类:

      定义:只要类中有一个方法是抽象的,那么这个类就是抽象类

      定义抽象类的关键字:abstract

      特点:

           1》抽象类不能直接实例化,只能被继承 

           2》抽象类中抽象方法名称只能定义公共的、受保护的

           3》抽象类中可以有属性、普通方法

           4》抽象类中定义n个抽象方法名称,子类继承就得>=n个方法

           5》子类继承的时候方法权限只能比抽象更宽松

           6》定义抽象类的关键字:abstract

           7》继承关键字:extends

          

    接口:

       定义:有时候数据需要跨服务器端传输,需要提供开放数据引入接口

       定义接口的关键字:interface

       特点:

          1》接口不能直接使用,只能被继承

          2》接口中方法只能定义成公共的  ***

          3》接口中定义n个方法名称,子类继承的时候就得>=n个方法

          4》接口解决了php单继承的问题,实现多继承

          5》定义接口的关键字:interface

          6》继承关键字:implements

     

         

    抽象类和接口的区别:

        1》抽象类:单继承

           接口:可以多继承

        2》抽象类:抽象方法可以是公共的/受保护的

           接口:必须公共的

        3》抽象类:定义关键字:abstract 继承关键字:extends

           接口:定义关键字:interface 继承关键字:implements

     

    序列化和反序列化

       之前取类里的方法需要实例化得到对象调用方法,每次都new占据内存,

       所以引入序列化serialize(对象)和file_put_contents(文件名,序列化后的对象)

       下个页面在文件里取出file_get_contents(文件名)反序列化unserialize(序列化的对象)成对象,在调用方法

       主要目的:经常使用的方法,不用每次都new 存文件里,减少内存

     

     

     三  面向对象设计模式  

         1  策略(Strategy)模式

         2  工厂(Factory)模式

         3  观察者(Observer)模式

         4  观察者(Observer)模式

     

     

     

    单例模式:

           是什么:是一种设计模式,一个类只能实例化一次,只能有一个

                   对象。

           为什么:只new一次,节省空间资源

           怎么做:三私一公

     

                     ①私有的构造方法

                     ②私有的克隆方法  防止克隆——clone

                     ③私有的静态属性  储存生成的唯一对象

                     ④公共的静态方法  用来访问静态属性储存的对象,如果没有对象,则生成此单例

                 

            关键词 instanceof 检查此变量是否为该类的对象、子类、或是实现接口。

  • 相关阅读:
    【每天半小时学框架】——React.js的模板语法与组件概念
    PHP中使用 $_GET 与$_POST 实现简单的前后台数据传输交互功能
    轻松几句搞定【Javascript中的this指向】问题
    跨平台移动端APP开发---简单高效的MUI框架
    JavaScript基本知识点整理(超实用)
    一款特好用的JavaScript框架——JQuery
    一个比较实用的商业级图表Echarts
    MUI顶部选项卡的用法(tab-top-webview-main)
    一个非常好用的前端JS框架-AngularJS(一)
    JavaScript面向对象中的继承
  • 原文地址:https://www.cnblogs.com/liujunyue/p/11320781.html
Copyright © 2011-2022 走看看