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 相关文章推荐
程序员编程十条戒律
Jul 09 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
php通过session防url攻击方法
Dec 10 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 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清除bom示例
2014/03/03 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
非常好的js代码
2006/06/27 Javascript
实现复选框全选/全不选切换
2006/12/23 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
Python中的下划线详解
2015/06/24 Python
详解python进行mp3格式判断
2016/12/23 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
python中os.remove()用法及注意事项
2021/01/31 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
建议书的格式
2014/05/12 职场文书
农村门前三包责任书
2014/07/25 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
Redis实现订单过期删除的方法步骤
2022/06/05 Redis