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 相关文章推荐
PHP也可以?成Shell Script
Oct 09 PHP
php生成略缩图代码
Jul 16 PHP
php使用递归计算文件夹大小
Dec 24 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
分享php分页的功能模块
Jun 16 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
完美的php分页类
Oct 24 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 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
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
Python 装饰器深入理解
2017/03/16 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python实现词法分析器
2019/01/31 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
python集合的新增元素方法整理
2020/12/07 Python
python 通过exifread读取照片信息
2020/12/24 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
十八大闭幕感言
2014/01/22 职场文书
天地会口号
2014/06/17 职场文书
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android
SQL Server中搜索特定的对象
2022/05/25 SQL Server