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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
深入PHP数据缓存的使用说明
May 10 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
php伪静态之APACHE篇
Jun 02 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
CodeIgniter常用知识点小结
May 26 PHP
php集成动态口令认证
Jul 21 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
多个Laravel项目如何共用migrations详解
Sep 25 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生成图形(Libchart)实例
2013/11/06 PHP
php使用websocket示例详解
2014/03/12 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP面向对象精要总结
2014/11/07 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
PHP编写简单的App接口
2016/08/28 PHP
用于table内容排序
2006/07/21 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python 正则表达式(转义问题)
2014/12/15 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Django框架实现的分页demo示例
2019/05/25 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
详解KMP算法以及python如何实现
2020/09/18 Python
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
2014年基层党组织公开承诺书
2014/03/29 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
离职报告格式
2014/11/04 职场文书
外国人来华邀请函
2015/01/31 职场文书
房地产项目合作意向书
2015/05/08 职场文书