php面向对象--php面向对象ppt
面向对象的概念(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相关推荐
- java面向对象课件_《JAVA面向对象基础》PPT课件.ppt
<<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...
- Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)
程序设计的三种基本结构: 面向对象,面向过程,函数式编程 1,什么是面向对象编程 面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" ...
- 【面向对象】面向对象的分析与设计概述
文章目录 分析与设计 结构化方法与面向对象方法 面向对象分析与设计 分析与设计 分析强调对问题的调查 而不是如何确定解决方案. 设计强调的是问题的逻辑解决方案 . 结构化方法与面向对象方法 结构化方法 ...
- 什么是面向过程?什么是面向对象?面向对象的三大基本特征是什么?
一.什么是面向过程? 面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用. 面向过程我们所关心的是解决一个问题的步骤,举个例子,汽车 ...
- 面向对象,面向对象的优点
面向对象,面向对象的优点 什么是面向对象呢,百度百科的词条解释是这样的 面向对象(Object Oriented)是软件开发方法,一种编程范式.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如 ...
- 什么是面向对象?面向对象的特征?面向对象和面向过程的区别?
什么是面向对象? 面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP), Java 是一个支持并发.基于类和面向对象的计算机编程语言. 面向对象软件开发具有以下优点: 代码 ...
- Java面向对象设计(面向对象)
Java面向对象程序设计 面向对象 学习JAVA必须掌握类和对象,这样可以深层次理解Java这种面向对象的程序开发理念,从而更好更快地掌握Java这门语言的编程思想和方法 类 类保存着方法和属性,那么 ...
- Python - - 面向对象 - - 初始面向对象
目录 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 面向对象 ...
- 什么是php面向对象及面向对象的三大特性
什么是面向对象? 面向对象编程,也就是我们常说的OOP,其实是面向对象的一部分.面向对象一共有3个部分:面向对象分析(OOA).面向对象设计(OOD).面向对象编程(OOP).我们现在将要学习的就是面 ...
- 面向对象技术--面向对象开发技术
说在前面: 本系列文章专注于软考备考复习内容梳理,文章内容是对教材中知识点和考点的提炼,备考过程中可以有针对的进行复习,减少阅读量,有的放矢. 导航目录: 一.面向对象分析 1.认定对象 2.组织对象 ...
最新文章
- 4月11日云栖精选夜读 | 阿里云异构计算发布:轻量级GPU云服务器实例VGN5i
- js进阶 12-1 jquery的鼠标事件有哪些
- C++ inline函数和宏
- 理解原理的重要性 - 论PostgreSQL merge join 成本评估陷阱 含case
- html简单网页代码表白_表白网页代码,不会代码也可以操作,告别单身
- oracle中获取年份、月份段内的时间
- python中curve fit_在python中拟合多变量curve_fit
- LeetCode 1973. Count Nodes Equal to Sum of Descendants(DFS)
- Kafka从上手到实践 - 初步认知:Zookeeper | 凌云时刻
- CAN协议详解-01
- mysql读mdf_mdf文件导入mysql,mysql怎么导入mdf文件 | 帮助信息-动天数据
- 杭电 2037 经典贪心
- 如何选择计算机硬件,如何选择计算机硬件?盲目选择硬件只会导致您的计算机被提前淘汰!...
- C标准库-va_list
- 金立Android版本,金立amigo为国内首个安卓5.0手机操作系统
- LT2611UXC-LVDS转HDMI2.0转换芯片
- php的amqp扩展 安装(windows) rabbitmq学习篇
- Qt 开发使用VSCode
- EXCEL数据计算结果不对
- ESP32:蓝牙BLE控制M3508电机
热门文章
- jsp基于java廉价房屋租赁管理系统
- 从零到一实现复杂表格需求(antd table 合并行 合并列)
- 数组Array.slice()方法应用与底层原理剖析
- 辽宁奥普泰12月26-29日参加2021第十八届CPSE安博会 7C01展位期待您的莅临
- Stimulsoft Dashboards.JS JavaScript 2203.1.0仪表板
- 70、android 查看当前显示activity方式
- AI数学基础(2)--- 霍夫丁不等式
- 周鸿祎:如何做好产品经理
- 【ES实战】在Linux下 CentOS 7离线安装Rally2.7.0
- 安恒11月赛Web题目复现