PHP抽象类 介绍


Posted in PHP onJune 13, 2012

在自然语言中,我们理解抽象的概念是,一个物体的一种大的描述,这种描述对某类物体来说是共有的特性。那么在PHP中也是一样的,我们把一个类进行抽象,可以指明类的一般行为,这个类应该是一个模板,它指示它的子方法必须要实现的一些行为。
PHP抽象类应用的定义:
abstract class ClassName{
}

PHP抽象类应用要点:

1.定义一些方法,子类必须完全实现这个抽象中所有的方法

2.不能从抽象类创建对象,它的意义在于被扩展

3.抽象类通常具有抽象方法,方法中没有大括号

PHP抽象类应用重点:

1.抽象方法不必实现具体的功能,由子类来完成

2.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义

3.抽象类的方法可以有参数,也可以为空

4.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数

PHP抽象类应用示例:
abstract public function_name(); //注意没有大括号
PHP抽象类规则:
某个类只要至少含有一个抽象方法,就必须声明为抽象类
抽象方法,不能够含有函数体
继承抽象类的子类,实现抽象方法的,必须跟该抽象方法具有相同或者更低的访问级别
继承抽象类的子类,如果不实现所有抽象方法,那么该子类也为抽象类
作为演示,我们来实现一个简单的抽象类:计算矩形的面积。这个矩形可以从形状类扩展。

< ?PHP 
abstract class Shape { 
abstract protected function get_area(); 
//和一般的方法不同的是,这个方法没有大括号 
//你不能创建这个抽象类的实例:$Shape_Rect= new Shape(); 
} 
class Rectangle extends Shape{ 
private $width; 
private $height; 
function __construct($width=0, 
$height=0){ 
$this->width=$width; 

$this->height=$height; 
} 
function get_area(){ 

echo ($this->width+$this->height)*2; 
} 
} 
$Shape_Rect = new Rectangle(20,30); 
$Shape_Rect->get_area(); 
?>

这也算是一个简单的例子,基本上可以说明PHP中抽象类的用法了,其他的不想多说了。个人觉得抽象类一般在大的项目才会用吧,因为我觉得它实在是要遵守的”规矩”太多了,用起来不方便!当然这只是我的意见。还想多说一些,PHP抽象类应用是单继承的,也就是说你只能从一个类继承,而不能一个类继承了A类,又继承B类,如果要实现这样的功能,得使用接口相关的知识了,在此暂时不讨论PHP接口的知识!一句话:单继承多接口中!
PHP 相关文章推荐
PHP4中session登录页面的应用
Jul 25 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
PHP json_decode函数详细解析
Feb 17 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
PHP 设计模式系列之 specification规格模式
Jan 10 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 PHP
PHP大文件及断点续传下载实现代码
Aug 18 PHP
MySQL 日期时间函数常用总结
Jun 12 #PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 #PHP
php数字游戏 计算24算法
Jun 10 #PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 #PHP
逆序二维数组插入一元素的php代码
Jun 08 #PHP
PHP 年龄计算函数(精确到天)
Jun 07 #PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 #PHP
You might like
PHP include任意文件或URL介绍
2014/04/29 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
jQuery事件对象总结
2016/10/17 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
浅谈Python 对象内存占用
2016/07/15 Python
用Python实现随机森林算法的示例
2017/08/24 Python
详解python中的 is 操作符
2017/12/26 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
班主任对学生的评语
2014/04/26 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
民事起诉书范本
2015/05/19 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Java使用HttpClient实现文件下载
2022/08/14 Java/Android