zoukankan      html  css  js  c++  java
  • 20150110--魔术方法魔术常量+面向对象-01

    image

    回顾

    面向对象编程:类,对象和实例化

    类成员:属性,方法和类常量,访问修饰限定符(public,protected和private)

    对象访问属性和方法:对象->属性/方法(实参列表);

    内部访问:$this,代表当前进入到类内部的对象

    魔术方法:构造方法和析构方法

    对象传值,对象比较

    面向对象

    类的加载

    因为要得到一个类的对象,必须先保证类结构已经在内存中(代码段)。

    clip_image002

    自动加载

    在需要用到类的时候,系统会根据指定好的路径去找对应的类文件(文件名为基础),然后根据用户指定的操作,对文件进行处理(加载)。

    魔术函数:会自动被调用的函数

    __autoload():自动加载函数,所有的自动(魔术)都是提供了一个机制,能够被系统自动调用,但是内部的结构都是用户自己定义。

    clip_image004

    自动加载通常的处理方式

    clip_image006

    自动加载是PHP对于类的加载的一种处理机制(小系统),专门负责加载文件。

    1. 实例化的第一步:先去代码段中查看对应的类是否存在

    2. 如果不存在,系统会查看是否开启了自动加载机制(__autoload)

    3. 如果有自动加载存在,那么系统就会调用自动加载函数,传入参数:类名

    注意:自动加载的使用前提,是类文件与类之间的关系特别清楚(完全相同),而且对应的类文件名字,必须有规则(类名.class.php)

    类常量的访问

    类常量属于类,而不属于对象。对象是不能访问。

    常量的访问必须通过类来实现:

    类名::常量名,::叫做范围解析操作符

    clip_image008

    因为在类的内部经常性的使用类来访问类中的成员,所在类的内部使用类进行访问的时候,有一个类似$this代表对象的关键字:self,自己的意思,代表当前类名(self不能单独打印输出,self必须结合范围解析操作符)

    clip_image010

    常量的内存分布

    clip_image012

    self与$this的区别

    1. self代表类,$this代表对象

    2. self访问类内部的常量和静态属性和静态方法,$this访问对象的属性和普通方法

    3. self必须配合范围解析操作符(::)才能生效,$this代表对象,对象本来就是一种数据类型,所以$this可以单独被打印。

    4. 能用$this的地方,一定可以使用self,但是能使用self的地方不一定可以使用$this

    clip_image014

    类常量,静态属性和静态方法的内部访问使用self;

    普通方法,属性的内部访问使用$this

    静态

    静态分为两个部分:静态属性和静态方法

    静态的东西都是给类用的(包括类常量),非静态的都是给对象用的

    静态属性

    在定义属性的时候,使用关键字static修饰的属性称之为静态属性。

    clip_image016

    静态属性属于类不属于对象。

    clip_image018

    对象统计器:统计当前类被实例化了多少个对象。

    clip_image020

    静态方法

    使用static关键字修饰的方法叫做静态方法。(静态方法原则上是给类用的)

    clip_image022

    能用静态解决的问题,不用普通方法解决问题(静态的东西可以直接使用类访问,不需要通过对象实例化,因此节省了内存空间,提升了效率)。

    对象访问静态方法(可以)

    clip_image024

    静态方法和非静态方法的区别

    clip_image026

    静态方法里面不能使用$this关键字。

    特别注意:

    1. 在写代码的过程中,严格遵循大小写规范

    2. 严格遵循:静态的内容给类访问,非静态的是给对象访问,不要跨界操作

    魔术方法

    对象是一种复合数据类型,不能直接使用echo进行输出操作。

    clip_image028

    __tostring():指的是当对象需要被转换成字符串的时候,会自动调用的方法

    clip_image030

    对象默认的是引用传递,所以导致对象的产生只能是new才能产生,但是有时候需要通过对象来产生对象,这时候需要应用到一个克隆的技术。

    语法:变量 = clone 对象变量:

    clip_image032

    魔术方法:__clone(),克隆对象的时候,被克隆出来的对象会去调用的方法。

    clip_image034

    魔术常量

    __CLASS__:代表当前类名,只能类的内部使用

    clip_image036

  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/lifushan/p/5414866.html
Copyright © 2011-2022 走看看