zoukankan      html  css  js  c++  java
  • php面向对象编程--学习笔记

    1.声明一个类

    php中使用class关键字创建一个新类,类包括属性与方法。语法格式如下:

    1. <?php  
    2.  class类名{  
    3.   属性;  
    4.   方法;  
    5.  }  
    6. ?>  


    2.创建一个实例对象

    创建对象的过程称为实例化,对象被创建时就包含3个特性:对象句柄,对象属性,对象方法;

    对象句柄:用于区分不同的对象。对象创建好了就会获取一块存储空间,存储空间的地址即为对象的标识,也就是对象的句柄。

    对象属性:用于描述对象的静态特征。

    对象方法:用于描述对象的动态特征。

    如果要创建一个新的且唯一的对象,可使用'&'引用符号。例如:

    1. <?php  
    2.  $对象名称 = new &类名称();  
    3. ?>  


    当类实例化后,可以使用操作符'->'来调用对该对象的属性和方法。

    3.类的属性与方法

    属性的声明:关键字成员变量名;

    关键字可以是public,private,protected,static中的任意一个,默认是public

    4.类的常量

    常量使用const关键字来定义一个类的常量。类常量不与这个类的任何特定实例相关联,所以不可以使用间接引用操作符来访问它们。类常量通常要大写,如果多个类常量由多个单词组成,建议使用下划线将它们分开。

    5.类的构造方法和析构方法

    构造方法:一个类中只能有一个构造方法,构造方法不会被调用,只有在使用new关键字创建对象的时候才会调用构造方法。

    例如:

    1. <?php  
    2.  class类名{  
    3.   function__construct(){  
    4.    初始化语句;  
    5.   }  
    6.  }  
    7. ?>  


    在工作中,也可以调用和实例化对象没有任何关系的类构造函数,只须在__construct前面加上类名,例如:类名::__construcr();

    析构方法:析构方法与构造方法是相对的,它在某个对象中的所有引用都被删除或对象被显式销毁时执行。

    例如:

    1. <?php  
    2.   class类名{  
    3.    function __destruct(){  
    4.    初始化语句;  
    5.    }  
    6.   }  
    7. ?>  


    脚本执行结束时,PHP会撤销内存中的所有对象,因此,如果实例化的类和实例时创建的信息都留在内存中,就不需要显示地声明析构函数。但是,如果实例化时创建了不容易丢失的数据,就应该在对象撤销时撤销这些数据,因此就需要定制析构函数。

    6.静态属性与方法

    将类中的属性与方法声明为静态的就叫做静态方法。静态方法不受任何具体对象的限制,所以不需要建立实例就可以直接引用类中的静态方法。

    调用方式:类名称::静态方法名称

    注释:'::'符号称为范围解析操作符,它可以用于访问静态成员,静态方法和常量,还可以用于覆盖类中的成员和方法。例如:

    1. <?php  
    2.   class sta_num{  
    3.    static$num=0;  
    4.   }  
    5.   sta_num::$num++;  
    6. ?>  


    如果想在同一类的成员方法中访问静态属性,可以通过在该静态属性的名称前加上操作符'self::'来实现。

    例如:

    1. <?php  
    2.   class sta_num{  
    3.    static$num=0;  
    4.    function add(){  
    5.     self::$num++;  
    6.    }  
    7.  }  
    8.  sta_num::$num++;  
    9. ?>  


    7.对象的克隆

    通过clone后可以得到的对象与原来的对象没有任何关系,它把原来对象的所有信息从内寻的位置中复制了一份,然后在内存中又开辟一个空间来存储克隆后的对象。例如:

    1. <?php  
    2.  calss a{}  
    3.  $ojectAnew a();  
    4.  $objectB= clone $objectA;  
    5. ?>  


    如果在对象中定义了_clone方法,则可以在对象被克隆时来调整克隆行为,此方法的代码将在克隆的操作期间来执行。

    8.继承

    PHP中,使用extends关键字来建立一个类的继承。格式如下:

    1. class 子类名称 extends 父类名称{  
    2.   子类属性;  
    3.   子类方法;  
    4. }  


    当子类要调用父类的成员方法时需要用到关键字'patent::',例如:

    parent::父类的成员方法

    9.检测对象的类型

    php中可以使用instanceof运算符来检测当前对象是否属于同一个类。

    10.多态

    1)通过继承抽象类实现多态

    抽象类里面至少包含一个由关键字abstract修饰的抽象方法,抽象方法是不实现具体方法的空方法。抽象类不能被实例化,只能由子类去继承,然后在继承的子类中完成具体功能。

    例如:

    1. <?php  
    2.  abstract class work{  
    3.   abstract function work_name($name);  
    4.  }  
    5.  class man extends work{  
    6.  function work_name($name){  
    7.   echo$name.'is true';  
    8.  }  
    9. }  
    10. class woman extends work{  
    11.  function work_name($name){  
    12.   echo $name.'is false';  
    13.  }  
    14. }  
    15. ?>  


    对于work类而言manwoman就是它多态的表现。

    2)通过接口实现多态

    接口是一组成员方法声明的集合,它只包含一些空的成员方法或常量,这些空的成员方法将由实现该接口的类去实现。定义一个接口需要使用interface声明,定义接口的方法如下:

     

    1. interface 接口名称{  
    2.  类常量;  
    3.  function 成员方法_1;  
    4.  function 成员方法_2;  
    5. }  


    在接口中不存在构造方法和析构方法,接口可以被继承,它可以继承多个接口,而不能继承一个类。接口的实现需要使用关键字implements。当使用类来实现接口时,必须包含接口定义的所有方法,否则在运行时会出现错误。例如:

    1. <?php  
    2.   interface people{  
    3.    function favourate_sport();  
    4.   }  
    5.   class  children implements people{  
    6.   function favourate_sport(){  
    7.   方法体;  
    8.   }  
    9.  }  
    10.  class student implements people{  
    11.    function favourate_sport(){  
    12.     方法体;  
    13.    }  
    14.  }  
    15. ?>  


    对于接口people而言,类childrenstudent就是其多态的表现。

      1. <pre name="code" class="php"><pre name="code" class="php"><p class="cjk" style="margin-bottom:0cm" align="LEFT"></p></pre>  
      2. <pre></pre>  
      3. <pre></pre>  
      4. <pre></pre>  
      5. <pre></pre>  
      6.   
      7. </pre> 
  • 相关阅读:
    极域电子教室 e-Learning Class V4 2010专业版 学生机 卸载方法
    浅谈IT员工管理
    apacheserver下载、安装、配置
    Android BLE开发之Android手机搜索iBeacon基站
    Qt编程18:Qt调色板QPalette的使用
    二叉树的操作
    Android应用开发多语言drawable目录
    Mybatis文档阅读笔记(明日继续更新...)
    《Spark快速大数据分析》—— 第六章 Spark编程进阶
    Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/3682673.html
Copyright © 2011-2022 走看看