一、定义类 使用关键字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. linux 终端 pac ssh登录工具使用教程

    1.下载: 首先下载deb文件:https://sourceforge.net/projects/pacmanager/ 2.安装: dpkg -i pac-4.5.5.7-all.deb 3.安装依 ...

  2. expdp/impdp数据泵分区表导入太慢了。添加不检查元数据参数提高效率:ACCESS_METHOD=DIRECT_PATH

    分区表数据泵导入太慢,达不到客户的迁移要求导出语句如下:(10G单节点)userid='/ as sysdba'directory=milk_dirdumpfile=mon_%U.dmplogfile ...

  3. Hibernate的查询方式

    Hibernate的查询的方式 OID检索 get或load方法进行的查询 对象导航检索 linkman.getCustomer(); HQL检索 用于接收hql语句进行查询,面向对象查询方式. 通过 ...

  4. pytorch安装 caffe2 安装:git 慢 caffe2 cannot find -lopencv_dep_cudart ,undefined reference to 'pthread_create'

    最开始的问题: caffe2目前已经不维护了.怎么编译都报错,并且有third_party的代码链接已经飞了.下载不全代码了.建议 不要再折腾了,直接安装Pytorch. 首先,基本环境是ubuntu ...

  5. 获取object的值

    class Program { static void Main(string[] args) { var data = Unite(); var name = data.GetType().GetP ...

  6. springboot security

    Authority    权限Credential    证书Grant    授予 Authentication 身份验证 以下,我们将通过四步,逐步实现spring-security的userna ...

  7. 在linux上安装docker

    我的linux系统是阿里云服务器,是centos版本的. 前置条件 64-bit 系统 kernel 3.10+ 用uname -r命令检查内核版本,返回的值大于3.10即可. 用sudo wget ...

  8. 关于js-angularJS的路由传参

    使用angular进行网页跳转传参 app.controller('payController', function ($scope, $location, payService) { 注明$loca ...

  9. [Sw] 使用 Swoole Server task/协程 处理大数据量异步任务时注意

    关于 Buffered Query 和 Unbuffered Query:http://www.php.net/manual/zh/mysqlinfo.concepts.buffering.php 对 ...

  10. Oracle使用学习笔记(二)_Sql语句

    一.Sql语句的分类 数据操作语言,简称DML(data manipulation language),如增加,删除,修改,查询数据等 数据定义语言,简称DDL(data defination lan ...