一、定义类 使用关键字class定义

二、实例化对象  使用关键字new实例化对象

三、类成员的添加和访问

(1)类成员:属性、方法、常量

(2)添加成员需要使用修饰符  public、protected、private

(3)修饰符的作用范围

  public 类内类外子类

  protected 类内 子类

  private 类内

(4)添加方法:如果方法前不带修饰符,默认带public;

(5)添加常量:const 常量名;

  访问常量:类名::常量名;

  ::范围解析操作符

四、类内部对象$this和内存原理

$this是一个对象,指向实例化对象。当我们new实例化的时候,系统会给这个对象分配一个内存空间,内存空间分为栈内存和堆内存,将变量存在栈里,代码块存在堆里,然后堆的内存地址指向栈里的变量,如果再给栈中的变量赋值引用数据类型,内存地址就会被改变

五、如果$a和$p指向同一个内存地址,它们是同一个对象,则改变一个则两个都会变

  需要用克隆解决这个问题 关键字clone;通过clone来复制一个一模一样的对象,这样它们就不是同一个对象了;

六、构造函数和析构函数

(1)构造函数:我们在声明类的时候就存在这个函数,用new实例化时,函数自动调用。

public function __construct(){};

(2)析构函数:用于释放new实例化的内存空间,如果不销毁,会增加系统性能负荷;

new实例化时,系统会自动调用;销毁原则:先人后出。

七、静态成员

静态成员的添加:在成员属性或方法前加关键字 static

静态成员的访问: 内部使用:self::$变量;或   类名::$变量;

        外部使用: 类名::$变量;

八、面向对象的三大特征

(1)封装:对外只提供可操作的方法,不会告诉你内部结构

(2)继承 子类可以继承父类的属性和方法,但是是有限继承,

  public、protected、private三个修饰的属性都可以继承,public、protected两个

  修饰的方法可以继承,父类的常量可以继承

(3)多态:php没有多态

  重载:当子类跟父类有个相同的方法时,子类的方法会覆盖父类的方法

九、关键字:parent

在继承中的子类有parent,可以访问父类的常量、方法、父类的静态属性,属性成员不能访问

访问方式: parent::$静态属性、fn()、常量

十、final  不可重载的

(1)写在类前面 不许类被继承

(2)写在方法和属性前 子类不能重载父类的方法

十一、抽象类 abstract

(1)抽象类不能被实例化

(2)如果一个类里面有一个方法被声明为抽象类,这个类就得申明抽象类

(3)只要这个方法被声明为抽象方法了,就不能写函数体,将函数后面的{}去掉,函数体由子类实现

(4)在继承一个抽象类的时候,子类必须定义父类

PHP整理--PHP面向对象的更多相关文章

  1. 《JavaScript语言入门教程》记录整理:面向对象

    目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...

  2. php整理(三): 面向对象

    PHP学习(三)----面向对象   首先,还是建立一个好的理解模型: 1.什么是面向对象? 面向对象分为两个部分,那就是:什么是对象和什么是面向? 什么是对象: 对象的出现就是为了用代码更好的绘制我 ...

  3. python基础整理4——面向对象装饰器惰性器及高级模块

    面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...

  4. 尚学堂Java面试题整理

    博客分类: 经典分享   1. super()与this()的差别? - 6 -  2. 作用域public,protected,private,以及不写时的差别? - 6 -  3. 编程输出例如以 ...

  5. (转) 面向对象设计原则(二):开放-封闭原则(OCP)

    原文:https://blog.csdn.net/tjiyu/article/details/57079927 面向对象设计原则(二):开放-封闭原则(OCP) 开放-封闭原则(Open-closed ...

  6. Python中:self和__init__的含义 + 为何要有self和__init__

    Python中:self和__init__的含义 + 为何要有self和__init__ 背景 回复: 我写的一些Python教程,需要的可以看看 中SongShouJiong的提问: Python中 ...

  7. php实现MySQL读写分离

    MySQL读写分离有好几种方式 MySQL中间件 MySQL驱动层 代码控制 关于 中间件 和 驱动层的方式这里不做深究  暂且简单介绍下 如何通过PHP代码来控制MySQL读写分离 我们都知道 &q ...

  8. 例子:js超级玛丽小游戏

    韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键 ...

  9. JAVA面试题二

    JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...

随机推荐

  1. javap浅析-书籍第3章的手写稿样稿

    转载于:[xieyu_zy](http://blog.csdn.net/xieyuooo/article/details/17452383) 3.2.1javap命令工具 第1章中我们就提到了有些地方 ...

  2. 取消win10 任务栏已固定的软件

    通过组策略编辑器 设置为“已禁用”,就可 ,自由取消已固定的图标.

  3. Nginx——基本操作

    1.获得root用户权限 如果鉴定失败多试几次 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install ...

  4. js异步处理历程

    为什么会出现异步: js执行环境是单线程的,异步处理就非常重要. 处理的方法: 方法一:callback hell 解决:解决了异步处理 存在问题:出现多个回调函数嵌套,代码就会比较乱,出现回调地狱现 ...

  5. Android 开发 图片网络缓存加载框架Fresco

    简介 Fresco是一个在Android应用程序中显示图像的强大系统. Fresco负责图像的加载和显示.它将从网络.本地存储或本地资源加载图像,图像加载完成前会显示一个占位图片.它有两个级别的缓存: ...

  6. mac环境破解navicat premium 12.1

    1. 下载破解工具 https://github.com/DoubleLabyrinth/navicat-keygen/tree/mac 其中,navicat-keygen为破解器:navicat-p ...

  7. python configparse模块&xml模块

    configparse模块 用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser. [DEFAULT] serveraliveinterval = ...

  8. 几种解决方法:idea 找不到符号或找不到包

    一. idea找不到符号,可能是因为编码问题,所以,在File->settings->Editor->File Encodings-找到编码设置,更改为项目的编码要求,一般都为utf ...

  9. Linux安装Tomcat,运行Eclipse,web项目

    到官网下载:https://tomcat.apache.org/download-80.cgi  在这里是8.5.39版本 下载tar,gz 提取解压后,我这里是放到opt目录下 cd  切换目录 / ...

  10. java mybatis后台判断表是否存在mysql

    <select id="isTableExist" parameterType="string" resultType="int"&g ...