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 ...
随机推荐
- 狗鱼IT教程:推介最强最全的Spring系列教程
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建. 简单来说,Spring是一个分层的JavaSE/EEfull-stack( ...
- python向config、ini文件读取写入
config读取操作 cf = configparser.ConfigParser() # 实例化对象 cf.read(filename) # 读取文件 cf.sections() # 读取secti ...
- C# 反射获取属性值、名称、类型以及集合的属性值、类型名称
实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...
- Spring注解测试
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicatio ...
- js动态监听dom变化
原生js 动态监听dom变化,根据不同的类型绑定不同的处理逻辑 // Firefox和Chrome早期版本中带有前缀 var MutationObserver = window.MutationO ...
- 36_react_ui_antd
1:最流行的开源react ui组件库 1.1:material-ui(国外) 1.2:ant-design(推荐:国内蚂蚁金服) 2.如何使用 方式一(页面引入): 在<head>标签内 ...
- ensureCapacity增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。
扩容原则: 若参数值大于底层数组长度的1.5倍,则数组的长度就扩容为这个参数值:若小于底层数组长度的1.5倍,则数组长度就扩容为底层数组长度的1.5倍. ensureCapacity提高效率 fina ...
- 让anujs支持rc-select
git clone git@github.com:react-component/select.git cd select npm i babel-plugin-antd --save-dev npm ...
- Interlij idea
https://blog.csdn.net/qq_30180559/article/details/79146795 http://baijiahao.baidu.com/s?id=157736618 ...
- Create Oracle database using dbca in silent mode
12.2.0.1 dbca.rsp文件中必须内容如下: responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2 ...