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调用数据库的存贮过程
Oct 09 PHP
PHP 高手之路(三)
Oct 09 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
PHP命名空间简单用法示例
Dec 28 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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
提取HTML标签
2006/10/09 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
详解Python中的路径问题
2020/09/02 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
Spring整合Mybatis的全过程
2021/06/28 Java/Android