一、面向对象的三种特性,分别是封装性,继承性和多态性。

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面向对象摘要的更多相关文章

  1. JavaScript基础入门12 - 面向对象编程

    目录 JavaScript 面向对象编程 前言 构造函数创建对象 instanceof constructor 返回值 原型对象 关于对象的属性查找 in hasOwnProperty() JS当中实 ...

  2. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  3. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  4. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  5. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  6. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二

    今天继续分享我的阅读<LEARNING HARD C#学习笔记>知识点总结与摘要二,仍然是基础知识,但可温故而知新. 七.面向对象 三大基本特性: 封装:把客观事物封装成类,并隐藏类的内部 ...

  7. 《Effective C++》读书摘要

    http://www.cnblogs.com/fanzhidongyzby/archive/2012/11/18/2775603.html 1.让自己习惯C++ 条款01:视C++为一个语言联邦 条款 ...

  8. boost.asio源码剖析(五) ---- 泛型与面向对象的完美结合

    有人说C++是带类的C:有人说C++是面向对象编程语言:有人说C++是面向过程与面向对象结合的语言.类似的评论网上有很多,虽然正确,却片面,是断章取义之言. C++是实践的产物,C++并没有为了成为某 ...

  9. PHP视频教程 > PHP面向对象编程视频教程

    当前位置: 主页 > 编程开发 > PHP视频教程 > PHP面向对象编程视频教程 > kingstone金士顿手机内存卡16G仅65元 1.1.什么是面向对象和类 上传日期: ...

随机推荐

  1. JDFS:一款分布式文件管理系统,第五篇(整体架构描述)

    一 前言 截止到目前为止,虽然并不完美,但是JDFS已经初步具备了完整的分布式文件管理功能了,包括:文件的冗余存储.文件元信息的查询.文件的下载.文件的删除等.本文将对JDFS做一个总体的介绍,主要是 ...

  2. 读书笔记之宿舍共享wifi

    若有某方面侵权,请邮件1047697114@qq.com,一个工作日即可处理,谢谢   目录一.简单安装虚拟机二.简单设置,开热点! 我没试过那些wifi软件之类的,以下是个人测试的过程 一.简单安装 ...

  3. svn服务端安装、权限修改以及客户端的使用

    2017-10-1016:10:2 svn服务端安装.权限修改以及客户端的使用 svn服务端.客户端.汉化包下载 http://pan.baidu.com/s/1c1Ogj2C 1.安装服务器端程序( ...

  4. PHP字符串替换str_replace()函数4种用法详解

    mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )该函数返回一个字符串 ...

  5. cocos2dx - tmx地图分层移动处理

    接上一节内容:cocos2dx - 节点管理 瓦片地图(Tiled Map) 在cocos2dx文档中有简单的介绍及使用.详情可以看:http://www.cocos2d-x.org/docs/man ...

  6. 调试 ms 源代码

    如果需要调试 WPF 源代码或框架源代码,那么需要使用 DotPeek. 首先需要下载 dotPeek ,可以到官网下载 dotPeek: Free .NET Decompiler & Ass ...

  7. PHP中提问频率最高的11个面试题和答案

    问题:请用最简单的语言告诉我PHP是什么? 回答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言. 问题:什么是MVC? 回答:MVC由Model(模 ...

  8. Ceph和Openstack的cinder模块对接方法

    1.创建存储池 在ceph节点中执行如下语句. #ceph osd pool create volumes 2.配置 OPENSTACK 的 CEPH 客户端 在ceph节点两次执行如下语句,两次{y ...

  9. EF 数据重复和缺失问题(select 错误 )

    字段有 id,name,password,sex 1.错误举例: var data = db.User.Select(d => d):   2修正 var data = db.User.Sele ...

  10. Memcached存储命令

    Memcached各个存储命令的语法格式都类似,且有相同的参数和参数含义,先将可能出现的各个参数的意义说明如下: key:    键值 key-value 结构中的 key,用于查找缓存值. flag ...