[回忆曾经]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 包含类文件(命名一定要规范)

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

查看所有标签

猜你喜欢:

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

Head First HTML and CSS

Head First HTML and CSS

Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99

Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具