面向对象的概念(OOP)
¨对象
¨类

¨对象和类的关系

PHP5已经完全支持面向对象
属性
¨在类定义中声明变量,即创建了类的属性
方法
¨在类定义中声明函数,即创建了方法
PHP中属性与方法的引用操作符是“ - > ”

$this
¨对象内部代表这个对象的引用
构造函数
¨function __construct ( [参数] ) { ... ... }
¨当创建一个对象时,它将自动调用构造函数

构造函数兼容
¨PHP4中,构造函数的名称必须与类名相同。
为了向下兼容,如果一个类中没有名为
__construct( )的方法,PHP将搜索一个与类名
相同的方法

析构函数  
¨function __destruct ( ) { ... ... } ¨析构函数是 PHP5新添加的内容,在 PHP4中没  
有析构函数  
¨析构函数允许在销毁一个类之前执行的一些操  
作或完成一些功能  
¨析构函数不能带有任何参数

访问类型  
¨这是PHP5的新特性,但却是OOP语言的一个  
重要特性,而且大多数OOP语言都已支持。  
PHP5支持如下 3种访问修饰符:  
• public (公有的默认的)  
• private (私有的)  
• protected (受保护的)

• public  
¨类的成员将没有访问限制,所有的外部成员都  
可以访问(读和写)这个类成员  
¨在PHP5之前的所有版本中,类的成员都是 public的  
• private  
¨对于该类的外部代码是不允许改变甚至读操作

protected

¨对于该类的直接子类有访问权限

OOP三个基本特征
¨封装
¨继承
¨多态

封装  
¨封装性就是把对象的属性和行为结合成一个独  
立的相同单位,并尽可能隐蔽对象的内部细节。  
¨将类的成员变量声明为 private,再通过public 的  
方法来对这个变量进行访问

私有属性的访问
¨set/get方法
¨在PHP5中,预定义了两个函数__get()和
__set()来获取和赋值其属性,检查属性的
__isset()和删除属性的方法__unset()

__get()
n __set()
function __get($property_name) {
if(isset($this->$property_name)) {
return($this->$property_name);
} else {
return null;
}
}
function __set($property_name, $value) {
$this->$property_name = $value;
}

__isset()
n __unset()
function __isset($name) {
return isset($this->$name);
}
function __unset($name) {
unset($this->$name);
}

继承(is a) ¨在PHP中只有单继承,但一个类可以被多个类  
继承  
¨可以有多层继承,即一个类可以继承某一个类  
的子类  
¨子类继承父类的所有内容,但父类中的private部分不能直接访问  
¨子类中新增加的属性和方法是对父类的扩展

覆盖
¨子类中定义的与父类同名的属性是对父类属性
的覆盖,同名的方法也是对父类方法的覆盖
¨子类中的访问权限>=父类权限
¨调用父类被覆盖的方法:类名::或parent::
parent::__construct();
parent::$name;
parent::fun();

多态
¨对象的多态性是指在父类中定义的属性或行为
被子类继承之后,可以具有不同的数据类型或
表现出不同的行为
¨在PHP中,多态的特性并不明显

包含(has a)
¨一个类中包含另一个类对象

final
¨使用final关键字标记的类不能被继承
¨使用final关键字标记的方法不能被子类覆盖

static
¨在类内部,不能用$this来引用静态变量或方
法,而需要用self来引用
self::$静态属性、self::静态方法
¨在类外部可以使用
类::$静态属性、类::静态方法

const
¨在类里面定义常量使用的是”const”
¨self::CONSTANT; // 类内部访问
¨类名::CONSTANT; // 类外部访问

__toString()
¨直接输出对象引用时自动调用

对象的比较
¨==是比较两个对象的内容
¨===是比较对象的句柄,即引用地址
n 对象类型检测
¨instanceof操作符用于检测当前对象实例是否
属于某一个类的类型

克隆对象
¨在PHP5中要创建一个对象的副本,使用关键
字clone来实现
¨$obj2 = clone $obj;
n __clone()
¨在对象克隆时自动调用
¨__clone()可以没有参数,它自动包含$this和
$that两个指针,$this指向复本,而$that指向
原本

__call()
¨调用不存在的方法时自动调用
n __autoload()
¨自动加载类
function __autoload($class_name) {
include("$class_name"."_class.php");
}

序列化
¨serialize()
¨unserialize()

抽象方法和抽象类
¨abstract function 方法名( );
¨abstract class 类名{ }
¨抽象类不能被实例化,一个抽象类中必须有一
个抽象方法

接口
¨如果在一个抽象类中包含的只有抽象方法,可
以将其定义为interface(接口)
¨class 类名implements 接口名{ }
¨接口中只能声明常量属性,接口中的方法必须
定义为公有、抽象
¨接口中的方法也可以声明为static

php面向对象--php面向对象ppt相关推荐

  1. java面向对象课件_《JAVA面向对象基础》PPT课件.ppt

    <<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...

  2. Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)

    程序设计的三种基本结构: 面向对象,面向过程,函数式编程 1,什么是面向对象编程  面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" ...

  3. 【面向对象】面向对象的分析与设计概述

    文章目录 分析与设计 结构化方法与面向对象方法 面向对象分析与设计 分析与设计 分析强调对问题的调查 而不是如何确定解决方案. 设计强调的是问题的逻辑解决方案 . 结构化方法与面向对象方法 结构化方法 ...

  4. 什么是面向过程?什么是面向对象?面向对象的三大基本特征是什么?

    一.什么是面向过程? 面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用. 面向过程我们所关心的是解决一个问题的步骤,举个例子,汽车 ...

  5. 面向对象,面向对象的优点

    面向对象,面向对象的优点 什么是面向对象呢,百度百科的词条解释是这样的 面向对象(Object Oriented)是软件开发方法,一种编程范式.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如 ...

  6. 什么是面向对象?面向对象的特征?面向对象和面向过程的区别?

    什么是面向对象? 面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP), Java 是一个支持并发.基于类和面向对象的计算机编程语言. 面向对象软件开发具有以下优点: 代码 ...

  7. Java面向对象设计(面向对象)

    Java面向对象程序设计 面向对象 学习JAVA必须掌握类和对象,这样可以深层次理解Java这种面向对象的程序开发理念,从而更好更快地掌握Java这门语言的编程思想和方法 类 类保存着方法和属性,那么 ...

  8. Python - - 面向对象 - - 初始面向对象

    目录 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 面向对象 ...

  9. 什么是php面向对象及面向对象的三大特性

    什么是面向对象? 面向对象编程,也就是我们常说的OOP,其实是面向对象的一部分.面向对象一共有3个部分:面向对象分析(OOA).面向对象设计(OOD).面向对象编程(OOP).我们现在将要学习的就是面 ...

  10. 面向对象技术--面向对象开发技术

    说在前面: 本系列文章专注于软考备考复习内容梳理,文章内容是对教材中知识点和考点的提炼,备考过程中可以有针对的进行复习,减少阅读量,有的放矢. 导航目录: 一.面向对象分析 1.认定对象 2.组织对象 ...

最新文章

  1. 4月11日云栖精选夜读 | 阿里云异构计算发布:轻量级GPU云服务器实例VGN5i
  2. js进阶 12-1 jquery的鼠标事件有哪些
  3. C++ inline函数和宏
  4. 理解原理的重要性 - 论PostgreSQL merge join 成本评估陷阱 含case
  5. html简单网页代码表白_表白网页代码,不会代码也可以操作,告别单身
  6. oracle中获取年份、月份段内的时间
  7. python中curve fit_在python中拟合多变量curve_fit
  8. LeetCode 1973. Count Nodes Equal to Sum of Descendants(DFS)
  9. Kafka从上手到实践 - 初步认知:Zookeeper | 凌云时刻
  10. CAN协议详解-01
  11. mysql读mdf_mdf文件导入mysql,mysql怎么导入mdf文件 | 帮助信息-动天数据
  12. 杭电 2037 经典贪心
  13. 如何选择计算机硬件,如何选择计算机硬件?盲目选择硬件只会导致您的计算机被提前淘汰!...
  14. C标准库-va_list
  15. 金立Android版本,金立amigo为国内首个安卓5.0手机操作系统
  16. LT2611UXC-LVDS转HDMI2.0转换芯片
  17. php的amqp扩展 安装(windows) rabbitmq学习篇
  18. Qt 开发使用VSCode
  19. EXCEL数据计算结果不对
  20. ESP32:蓝牙BLE控制M3508电机

热门文章

  1. jsp基于java廉价房屋租赁管理系统
  2. 从零到一实现复杂表格需求(antd table 合并行 合并列)
  3. 数组Array.slice()方法应用与底层原理剖析
  4. 辽宁奥普泰12月26-29日参加2021第十八届CPSE安博会 7C01展位期待您的莅临
  5. Stimulsoft Dashboards.JS JavaScript 2203.1.0仪表板
  6. 70、android 查看当前显示activity方式
  7. AI数学基础(2)--- 霍夫丁不等式
  8. 周鸿祎:如何做好产品经理
  9. 【ES实战】在Linux下 CentOS 7离线安装Rally2.7.0
  10. 安恒11月赛Web题目复现