一、定义类 使用关键字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. JAVA相关技术

    开发服务器环境: 1.Linux系统 CentOS 6.5\7 2.JDK1.8 3.tomcat 9 4.mysql 5.7 开发环境: 1.开发集成工具:idea 2.构建工具maven 仓库暂时 ...

  2. C7.cpp

    Arr[i]==*(ar+i)         &arr[i]==ar+i 编译过程的最终产品是可执行程序------由一组机器语言指令组成 内联函数的优点是速度快,但是会占用很多内存,若是在 ...

  3. NoSuchMethodError解决方法

    下面演示下如何在啥都不知道的情况下遇到该错误的解决思路: 随便找一个错误示例: Caused by: java.lang.NoSuchMethodError: org.eclipse.jdt.inte ...

  4. python中令人惊艳的小众数据科学库

    Python是门很神奇的语言,历经时间和实践检验,受到开发者和数据科学家一致好评,目前已经是全世界发展最好的编程语言之一.简单易用,完整而庞大的第三方库生态圈,使得Python成为编程小白和高级工程师 ...

  5. git 入门与应用

    git可视化界面的项目版本控制软件,适用于git项目管理 SourceTree 安装方法 https://blog.csdn.net/qq_26230421/article/details/79921 ...

  6. Android 开发 8.0版本启动Service的方法

    前言  google在更新Android8.0后对Service的权限越发收紧.导致目前想要启动服务必需实现服务的前台化(否则在服务启动5秒后,系统将自动报错).下面我们就来看看如何在8.0上启动服务 ...

  7. python3 十六进制字符串进行分割并累加

    最近忘性大,记录一下 需求: ‘80 11 F1 01 1A’字符串需要把每一个十六进制字符加起来,即80+11+F1+01+1A=? 很简单,不解释,直接上 hex(sum([int(i,16) f ...

  8. 很不幸,装win10和Ubuntu双系统还是入坑了

    具体问题描述:在安装Ubuntu的时候,没有发现有与windows共存的提示,直接说本计算机没有安装系统.在安装完成后,发现通过BIOS只有进入Ubuntu的启动项,没有进入Windows的启动项. ...

  9. Django请求生命周期

    生命周期: 指浏览器访问开始,经过Django都发生了什么 ? 1 首先客服端发送http请求,把请求体(请求头和请求内容)生成 2 服务器接收请求后,根据路由映射表一个一个匹配.匹配成功后,后面不匹 ...

  10. Centos7】hostnamectl 设置主机名

    Centos7中提供了设置主机名的工具 hostnamectl hostname有三种状态 static(永久) transient(瞬态) pretty (灵活) 查看主机名状态 [oracle@h ...