PHP面向对象摘要
一、面向对象的三种特性,分别是封装性,继承性和多态性。
1、封装性:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体的实现细节,这就是封装思想。
2、继承性:继承性主要是描述类与类之间的关系,通过继承,可以在无须重新编写原有类的情况下,对原有类的功能进行拓展。
3、多态性:指的是同一操作作用于不同的对象,会产生不同的执行结果。
二、类与对象
简而言之,类是抽象的,而对象是具体的;类是一个物种的普遍存在的属性,而对象是细分出来,具体到某个实体对象。
在面向对象中,最核心的就是对象,为了创建对象,首先要定义一个类。
1、类的定义
class 类名{
成员属性;
成员方法;
}
2、对象的创建,也叫做实例化。
$对象名 = new 类名([参数1][参数2][...]);
三、类的封装
所谓类的封装是指在定义一个类时。将类中的属性私有化,即使用private关键字来修饰,私有化的属性只能在它所在类中被访问。PHP提供两种方法允许外界的访问。
1、通过getXXX()和setXXX()方法访问私有属性
getXXX获取属性值,setXXX设置属性值。
class Person{
private $name;
public function getName()
{
return $this->name;
}
public function setName($value)
{
$this->name = $value;
}
2、通过 __get()和 _ _set()方法访问私有属性
这两个方法是PHP自动调用的,功能和上面的一样。
3、public、protected和private修饰符
public:公有修饰符,所有成员都可以访问。
protected:保护成员修饰符,被修饰的不能被该类的修饰成员访问,但是能被子类访问和读写。
private:私有修饰符,对于同一个类里面的成员是可见的,访问无限制,但是不允许外部的代码访问。
4、this
它代表对象本身,当前对象。
$this->属性名;
四、构造方法和析构方法
每一个类中都有一个构造方法,他会在类实例化时进行自动调用,对类中的成员进行初始化。
与之对应的是析构方法,它在对象被销毁之前自动调用,用于完成清理工作。
1、构造方法
修饰符 function __construct(参数列表){
//初始化
}
2、析构方法
functions __destruct(){
//清理操作
}
五、类常量和静态成员
1、类常量
const PI = 3.1415926;
使用const关键字声明常量,常量名不需要加$符号,并且在声明的同时对他进行初始化。常量能够被类的所有对象共享。
2、静态成员
数据被类的所有对象共享,不属于任何对象,只属于类。
访问修饰符 static 变量名;
访问修饰符 static 方法名(){}
六、继承
1、继承的概念
在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都是动物。
class 子类名 extends 父类名{
//类体
}
2、重写父方法
在继承关系中,子类会自动继承父类中定义的方法,但有时子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。
3、final关键字
PHP中的类被final关键字修饰后,该类将不能被继承,也就是不能够派生子类。
当一个类方法被final关键字修饰后,这个类的子类就不能重写该方法。
七、抽象类和接口
1、抽象类
在定义一个类时,其中所需要的某些方法暂时不能完全定义出来,而是让其继承的类来实现,此时就用到抽象类。
abstract class 类名{
//类成员
}
抽象方法只有方法名没有方法体。
abstract function 方法名();
2、接口
如果一个类中的所有方法都是抽象的,则可以将这个类用另外一种方法来定义,即接口。在定义接口时,需用关键字 interface。定义接口与定义一个标准的类类似,但其中所有定义的方法都是空的。
interface 类名{
public function a();
public function b();
}
八、多态
在设计一个方法时,通常希望该方法具备一定的通用性。例如实现一个动物叫的方法,由于每个动物的叫声是不同的,因此可以在方法中接收不同的动物类型参数,当传入矛盾就发出猫叫,传入狗就狗叫。
PHP面向对象摘要的更多相关文章
- JavaScript基础入门12 - 面向对象编程
目录 JavaScript 面向对象编程 前言 构造函数创建对象 instanceof constructor 返回值 原型对象 关于对象的属性查找 in hasOwnProperty() JS当中实 ...
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- 【转】javascript面向对象编程
摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
- Java基础之面向对象以及其他概念
一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二
今天继续分享我的阅读<LEARNING HARD C#学习笔记>知识点总结与摘要二,仍然是基础知识,但可温故而知新. 七.面向对象 三大基本特性: 封装:把客观事物封装成类,并隐藏类的内部 ...
- 《Effective C++》读书摘要
http://www.cnblogs.com/fanzhidongyzby/archive/2012/11/18/2775603.html 1.让自己习惯C++ 条款01:视C++为一个语言联邦 条款 ...
- boost.asio源码剖析(五) ---- 泛型与面向对象的完美结合
有人说C++是带类的C:有人说C++是面向对象编程语言:有人说C++是面向过程与面向对象结合的语言.类似的评论网上有很多,虽然正确,却片面,是断章取义之言. C++是实践的产物,C++并没有为了成为某 ...
- PHP视频教程 > PHP面向对象编程视频教程
当前位置: 主页 > 编程开发 > PHP视频教程 > PHP面向对象编程视频教程 > kingstone金士顿手机内存卡16G仅65元 1.1.什么是面向对象和类 上传日期: ...
随机推荐
- Spring学习—生成图片验证码
今天想学下一下验证码的生成,就之前搭建好的一个spring框架上写了一个demo,我会贴出细节代码,但是spring的配置就不在介绍了.需要完整代码可以联系我! 会从前台页面到后台实现完整的讲解: 1 ...
- Android01-布局篇
在Android中,共有五种布局方式,分别是:LinearLayout(线性布局),FrameLayout(帧布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局) ...
- python中strip函数的用法
python中往往使用剥除函数strip()来对用户的输入进行清理.strip函数的最一般形式为: str.strip('序列') 其中,序列是一段字符串,该函数表示从头或者从尾部开始进行扫描,如果扫 ...
- 扩展javascript扩展(类,对象,原型)
扩展javascript扩展(类,对象,原型)
- java spark-streaming接收TCP/Kafka数据
本文将展示 1.如何使用spark-streaming接入TCP数据并进行过滤: 2.如何使用spark-streaming接入TCP数据并进行wordcount: 内容如下: 1.使用maven,先 ...
- KMP算法的细节问题
preface: 想必,很多人都知道D.E.Knuth与V.R.Pratt和J.H.Morris同时提出所谓的狂拽酷炫屌炸天的KMP算法,在对字符串的匹配(或是字符串的查找)方面表现出比较好的效率,该 ...
- OpenCV 学习笔记(模板匹配)
OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...
- UVa10129,Play On Words
给出n个单词,如果一个单词的尾和另一个单词的头字符相等,那么可以相连,问这n个单词是否可以排成一列.欧拉路应用,构图:一个单词的头尾字母分别作为顶点,每输入一个word,该word的头指向word的尾 ...
- MySQL简概
MySQL简介与概要 mysql 是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,现在已经被sun公司收购,支持FreeBSD.Linux.MAC.windows等多种操作系统.相比 ...
- Mysql编写sql语句的小技巧
1.查询数据(保证查询性能) SELECT * 和 SELECT t.id , t.name:后者性能其实总体优于前者. 2.在查询的时候最好给表起个 别名,方便找到表中要查询的字段.执行sql的进行 ...