PHP整理--PHP面向对象
一、定义类 使用关键字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面向对象的更多相关文章
- 《JavaScript语言入门教程》记录整理:面向对象
目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...
- php整理(三): 面向对象
PHP学习(三)----面向对象 首先,还是建立一个好的理解模型: 1.什么是面向对象? 面向对象分为两个部分,那就是:什么是对象和什么是面向? 什么是对象: 对象的出现就是为了用代码更好的绘制我 ...
- python基础整理4——面向对象装饰器惰性器及高级模块
面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- (转) 面向对象设计原则(二):开放-封闭原则(OCP)
原文:https://blog.csdn.net/tjiyu/article/details/57079927 面向对象设计原则(二):开放-封闭原则(OCP) 开放-封闭原则(Open-closed ...
- Python中:self和__init__的含义 + 为何要有self和__init__
Python中:self和__init__的含义 + 为何要有self和__init__ 背景 回复: 我写的一些Python教程,需要的可以看看 中SongShouJiong的提问: Python中 ...
- php实现MySQL读写分离
MySQL读写分离有好几种方式 MySQL中间件 MySQL驱动层 代码控制 关于 中间件 和 驱动层的方式这里不做深究 暂且简单介绍下 如何通过PHP代码来控制MySQL读写分离 我们都知道 &q ...
- 例子:js超级玛丽小游戏
韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键 ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
随机推荐
- js 解密
需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...
- java工具类——java将一串数据按照gzip方式压缩和解压缩
我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import java.i ...
- Revit 插件产品架构梳理
一.前言 BIM:Building Information Modeling 建筑信息模型,就是将建筑的相关信息附着于模型中,以管理该建筑在设计.算量.施工.运维全生命周期的情况.创建模 ...
- Android 开发 获取设备信息与App信息
设备信息 设备ID(DeviceId) 获取办法 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager ...
- IntelliJ IDEA 设置背景图片
1.在idea中 按快捷键 Ctrl+Shift+A 出现如图 输入 Set Background Image 双击 Set Background Image 2.选择要添加的图片的路径 ...
- sqlserver一些对象的创建
1.db_link 一 如何创建Dblink1)SQLServer 到 SQLServerExec sp_droplinkedsrvlogin PDALink,Null --删除映射(录与链接服务器上 ...
- linux上如何设置网络,出现connect: network is unreachable 的问题。
发现有网友问有关ping命令出现connect: network is unreachable 的问题. 这通常是因为没正确设置ip地址. 解决方法: 在确保完善网卡驱动,以及确保将网卡驱动编译进内核 ...
- Linux命令学习——strings
strings命令的作用是打印文件中的可打印字符. 常用的参数有: -f --print-file-name,在每个输出的字符串前打印文件名. -t [radix] --radix=[radix],输 ...
- MySQL复制相关技术的简单总结
MySQL有很多种复制,至少从概念上来看,传统的主从复制,半同步复制,GTID复制,多线程复制,以及组复制(MGR).咋一看起来很多,各种各样的复制,其实从原理上看,各种复制的原理并无太大的异同.每一 ...
- CentOS6.3上安装与配置nginx+php+mysql环境
1. 目前nginx采用是源码包安装的方式(yum安装失败),下载地址:http://nginx.org/en/download.html 我这里的安装包是:nginx-1.12.0.tar.gz 2 ...