OOP 面向对象编程

面向对象

对象的概念是面向对象技术的核心。在现实世界里,我们面对的所有事物都是对象,如计算机、电视机、自行车等。在面向对象的程序设计中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。

面向对象的三个主要特性:

对象的行为:可以对对象施加哪些操作;如电视机的开、关、转换频道等。

对象的状态:当施加那些方法时,对象如何响应;如电视机的外形、尺寸、颜色等;

对象的标识:如何区分具有相同行为与状态的不同对象。

基本概念:

对象,所谓数据封装就是将一组数据与这组数据有关操作组装在一起,形成一个实体,这个实体就是对象。

类(Class)具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。

成员:对象的状态和行为。

属性:对象的状态,一个对象用数据值来描述它的状态。

方法:对象的行为,用于改变对象的状态,对象及其操作就是对象的行为

成员

属性

方法

常量

魔术方法

构造

析构

__clone

__toString

__call

继承:

一个对象拥有或者使用另一个对象的成员信息,称之为这个对象继承自另一个对象。

Php中,通过在类上,使用特殊的操作达到目的。

通过在定义类时,利用 extends 来指明当前类对象继承那个类的对象!

重写override

集成时,如果发生成员冲突,php的处理方式,为重写。就是子类同名成员会覆盖父类同名成员。不能看到父类的同名成员:

final

final类,

只能被实例化对象不能用于被继承!

final方法

final关键字的另一个用法,用于限制方法!限制该方法,在所属类,被继承时,该方法不能被重写!

Public:

公共的。成员在类内,继承链上类内,和类外都可以访问到(任何地方)

Protected,保护的。类内和继承链上是类内都可以访问。

Private,私有的。类内。

抽象类 abstract

1) 概念:包含至少一个抽象方法的类,使用关键字abstract

2)特点: 不能实例化  , 做为父类,子类继承父类,重写抽象方法

接口 interface

1. 概念: 接口是软件工程中的一种技术,提供了其它类所遵循的统一的规范和标准(抽象方法)

2. 接口包含的内容:抽象方法、常量,不能包含属性和非抽象方法

3. 特点: 1)不能实例化   2)接口可以继承接口    3)类可以实现多个接口,弥补php中类单继承的弱点

魔术方法

1)定义魔术方法__get($property)

参数:$property,接收对象的私有属性名称

返回值:返回属性值

调用:当获得对象的私有属性值或不存在的属性时,自动调用

2)定义魔术方法__set($property,$v)

调用:当给对象的私有属性赋值时,自动调用

__isset()

3)定义析构方法__destruct()

参数:无参

4)定义魔术方法__isset()

参数:无参

返回值:字符串

调用:当判断1个对象是否存到某个属性时调用

6 、__autoload 自动加载

7、定义clone魔术方法

参数:无参

功能:如果private 该方法,该类的对象不能被克隆

8)定义魔术方法__call()

参数:$method_name  方法名称   $val:实参数组

调用:当调用私有或不存在的方法时,自动调用

经典的:

几乎所有的属性和大部分的方法都是私有(如果有继承的话,会有受保护)的,只有一些供给外部调用者使用方法,是公共的!

自动加载

__autoload

三大特性

封装,封装,在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

继承,是指一个对象直接使用另一对象的属性和方法。

类似于:按照法律或遵照遗嘱接受死者的财产、职务、头衔、地位等。

多态,接口的多种不同的实现方式即为多态

设计模式

单例

反射API

用户获取类的结构信息

异常的抛出与捕获

抛出:throw 异常对象

监视和捕获:

Try {

//可能出现异常的代码

} catch(捕获的异常对象) {

处理改异常的代码

}

异常的使用规则:

需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。

每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。

使用多个 catch 代码块可以捕获不同种类的异常。

可以在 try 代码块内的 catch 代码块中再次抛出(re-thrown)异常。

Serialize 序列化

Unserialize 反序列化

序列化作用是:保证数据类型不会发生改变

对象在被序列化时,是对象所拥有的属性会被序列化!

存在2个特殊的问题:

反序列化时,需要找到所属类

在对像被反序列化时,需要找到当前对象所属的类才可以被完美的反序列化,否则如果不能找到所属的类,那么会变成php内置类:__PHP_Incomplete_Class(不完整类)的一个对象。

时间: 2024-10-08 00:57:53

OOP 面向对象编程的相关文章

微软C#6.0语言OOP面向对象编程》《微软ASP.NET\MVC56网站开发》《微软Web服务\WCF\Web API3.0课程视频》

最新<微软C#6.0语言OOP面向对象编程><微软ASP.NET\MVC56网站开发><微软Web服务\WCF\Web API3.0课程视频>下载 下载链接:http://pan.baidu.com/s/1bnjJQnd 密码:36ji 微软与开源实战训练营QQ群:  203822816微软MSDN俱乐部QQ群:  29754721,

简单理解OOP——面向对象编程

OOP:面向对象编程 一. 什么是OOP 面向对象编程:Object-oriented Programming,OOP,面向对象程序设计. 面向对象编程是一种计算机编程架构,他的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成. OOP使得程序更有重用性.灵活性和扩展性.OOP的核心思想是:封装.继承.多态(重点是类和对象). 不同于POP(面向过程编程)的以过程为中心的编程思想,面向对象编程的中心思想是通过调用对象来实现想要实现的目的. 面向对象的思想: 是一种更符合我们

JavaScript 精粹 基础 进阶(8)OOP面向对象编程(上)

转载请注明出处 原文连接 http://blog.huanghanlian.com/article/5b698f14b8ea642ea9213f50 面向对象编程,oop并不是针对与javascript,很多语言都实现了oop这样一个编程发法论,比如说java,c++,都是实现了oop的语言. 概念与继承 概念 面向对象程序设计(Object-oriented programming OOP)是一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的实例,它将对象作为程序的基本单元,将程序和

一百零六、SAP的OOP面向对象编程,OO-ALV的简介

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构. 基本概念: 1.对象(Object)是一个现实实体的抽象.一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,这个程序产生该对象的动作或对它接受到的外界信号的反应.这些对象操作有时称为方法.对象是个动态的概念,其中的属性反映了对象当前的状态. 2.类(Class)用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.每个对象是类的

OOP面向对象编程的六大原则(上)

名词解释: OOA:面向对象分析 A:Analyze OOD:面向对象设计D:Design OOP:面向对象编程P:Program OOP六大原则(上):对象单一职责.里式替换原则.迪米特法则.开闭原则 对象单一职责:我们设计的对象必须职责明确,不能让他成为万能类,这里的对象可以是模块.类库,程序集,不单单指类. 1.特点:最常见的.比如分层:Model.业务层.UI层.把具有相同行为的类.放到一个模块,这个就是模块职责明确. 2.好处:每个类所包含的行为,属性都属于本身,后续的维护更具有针对性

js 设计模式 oop 面向对象编程

最初我们写js代码的时候是这么写 function checkName(){ //验证姓名 } function checkEmail(){ //验证邮箱 } function checkPassword(){ //验证密码 } 这种方式会造成全局变量的严重污染,再过渡到 var checkObject = { checkName : function(){}; checkEmail: function(){}; checkPassword: funcion(){}; } //也可如此写 var

Python 的OOP 面向对象编程基础

Objects Sorts of Program Languages Machine Orinted 机器指令 汇编语言 Procedure Orinted 按照步骤和分支处理 C Object Orinted 多人.多部门写作 C++ Java Python Python 中一切皆对象,面向对象做得非常彻底 对象是数据和操作的封装 对象是独立的,但对象之间可以互相作用 目前OOP是最接近人类认知的编程范式. OOP 描述数据--Property Action--Method class col

JavaScript 精粹 基础 进阶(9)OOP面向对象编程(下)

转载请注明出处 原文连接 http://blog.huanghanlian.com/article/5b698f22b8ea642ea9213f51 我们怎么去模拟重载,在javasceipr中我们可以通过参数的类型区别或者数量的区别,来去让同样一个函数名字,可以根据不同的参数列表的情况来去调用相应的函数. javascript中函数类型是不确定的,并且参数的个数也是可以任意的,那么我们可以通过判断实际传入的参数的个数,来去做一个模拟的重载, OOP(模拟重载.链式调用.模块化) 模拟重载 fu

重学C++ (十一) OOP面向对象编程(2)

转换与继承 本节主要须要区分的是: 基类和派生类的转换: 引用(指针)的转换和对象的转换. 1.每一个派生类对象包括一个基类部分.因此.能够像使用基类对象一样在派生类对象上执行操作. 基于这一点,能够将派生类对象的引用(指针)转换为基类子对象的引用(指针),且存在自己主动转换. 反之,基类到派生类的自己主动转换是不存在的,因此基类不包括派生类型的成员.另外,将基类指针或引用绑定到派生类对象时也存在限制,由于编译器编译时无法知道该转换是安全的(编译器确定转换是否合法,仅仅看指针或引用的静态类型).