[回忆曾经]PHP面向对象基础学习笔记(一)

栏目: PHP · 发布时间: 6年前

内容简介:[回忆曾经]PHP面向对象基础学习笔记(一)

[TOC]

"回忆曾经"系列

曾经手写的笔记(以前我一共有两本笔记本,一本是完整版,其中的笔记都是非常完整的,另一本是副本,笔记是残缺的)

完整版和副本什么区别捏?

因为当初我在完整版内写的笔记都是草写的,虽然完整但是字有点丑。

所以想到了再拿一个笔记本认真的将完整版内的笔记重新记录一遍,但是后来因为忙的原因就没有继续记录了。

直到想起来打算继续写的时候,发现完整版已经不见了,感觉非常可惜!

现在打算将部分内容以这种形式敲出来,算是给自己重新巩固巩固吧,同时说不定也能帮助到有需要的兄台(有错误地方望指出)。

面向对象编程 -- OOP(Object Oriented Programming)

1.三大范式

  1. 面向过程;

  2. 面向对象;

  3. 函数式编程;

2.面向对象的三大特性

  1. 封装;

  2. 继承;

  3. 多态;

3.对象

  1. 万事万物皆为对象;

  2. 客观存在的任何一个实体;

4.类

4.1.类与对象的关系

  1. 先有类,通过类实例化出对象;

  2. 使用的是对象;

4.2.类的定义格式

class 类名 {
	[成员属性]
		修饰符 属性名 [ = 值 ]
	[成员方法]
		[修饰符] function 方法名() {}
} //除了以上两种成员之外,不能有其它任何代码

4.3.类的实例化

  1. 使用 new 关键字;

  2. 每次 new 都会得到一个新对象;

  3. 都会触发构造方法;

4.4.成员特性

4.4.1.成员属性

  1. 可以有默认值;

  2. 默认值不能是变量;

  3. 默认值可以是常量;

  4. 值可以是任意类型;

4.4.2.成员方法

  1. 和以往函数一样;

  2. 可以直接访问自己的成员属性 ($this)

4.5.伪变量 -- $this

  1. 代表的是对象,表示的是自己;

  2. 不能在类的外面使用;

4.6.魔法方法

4.6.1.构造方法

  1. 和类名相同的方法;

  2. 也可以使用 __construct() 触发时机:在 new 关键字得到新对象的时候;

4.6.2.析构方法

  1. __destruct() 触发时机:在销毁对象的时候;

4.7.符号

->
::
=
==
===

4.8.三大特征之封装篇

4.8.1.三大范围

  1. 自己(当前自己类);

  2. 家族(当前继承的类与被继承类之间的关系);

  3. 外部;

4.8.2.三个关键字

  1. public(公有的);

  2. protected(受保护的);

  3. private(私有的);

4.8.3.三个范围与三个关键字间调用权限

| |public | protected | private | | ------------: | ------------: | ------------: | | 自己 |可以调用自己的public|可以调用自己的protected|可以调用自己的private| | 家族 |可以调用父类的public|可以调用父类的protected|不能调用父类的private| | 外部 |可以调用public方法|不能调用protected方法|不能调用private方法|

4.9.三大特征之继承篇

4.9.1.继承的特性

  1. PHP中类只支持单继承,只能有一个爹;

  2. PHP中类可以被多个继承,一个爹可以有多个儿子;

  3. PHP中类可以多层继承,可以有祖孙关系;

  4. 子类会覆盖父类的同名方法;

  5. 权限只能扩大不能缩小;

  6. 访问的一定是最终版本,被子类覆盖后的结果(私有除外);

  7. 重写父类方法的时候,参数结构(参数格式,是否有默认值)要保持一致;

  8. 要求:重写父类的构造方法的时候,务必在第一行调用父类的构造方法,如:

类名::方法名();
parent::方法名();

4.10.关键字

final

  1. 可以修饰类和方法,不能修饰成员属性;

  2. 被它修饰的类,不能被继承;

  3. 被它修饰的方法,不能被重写;

static

  1. 可以修饰成员属性和成员方法,不能修饰类;

  2. 静态成员可以直接通过范围操作符调用,不用实例化;

  3. 静态方法不能出现非静态内容($this);

  4. 静态方法里不能使用非静态属性;

  5. 使用:类名::$属性名,类名::方法名,self::$属性名,self::方法名;

const

  1. 可以在类里定义常量;

instanceof

  1. 用于判断前面的对象是否是后面的类的实例;

clone

  1. 克隆一个新对象,会触发魔术方法 __clone

self

  1. 代表的是[类],表示的是自己;

this

  1. 代表的是[对象],表示的是自己;

parent

  1. 代表的是类,表示的是父类;

4.11.魔术方法

__construct

  1. 在使用 new 关键字的时候触发;

__desstruct

  1. 在销毁对象的时候触发;

__get

  1. 在获取没有权限访问或者不存在的成员属性的时候;

__set

  1. 在设置没有权限访问或者不存在的成员属性的时候;

__isset

  1. 在用 isset 或者 empty 检测一个没有权限或者不存在的成员属性的时候;

__unset

  1. 在用 unset 删除一个没有权限或者不存在的成员属性的时候;

__call

  1. 调用一个没有权限或者不存在的方法时候;

__callstatic

  1. 调用一个没有权限访问或者不存在的静态方法的时候,但是自己也必须是一个静态的方法;

__tostring

  1. 将对象当做字符串输出的时候,必须返回一个字符串;

__invoke

  1. 将对象当作函数调用的时候;

__sleep

  1. 使用 serialize 串行化对象的时候

__wakeup

  1. 使用 unserialize 反串行化的时候

__clone

  1. 在使用 clone 关键字克隆对象的时候

__autoload

  1. 在实例化一个当前脚本不存在的类的时候,可以在这个方法里面使用 include 包含类文件(命名一定要规范)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C陷阱与缺陷

C陷阱与缺陷

Andrew Koenig / 高巍 / 人民邮电出版社 / 2003-12-1 / 30.00

作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程一起来看看 《C陷阱与缺陷》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具