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 相关文章推荐
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php5.3 废弃函数小结
May 16 PHP
php简单提示框alert封装函数
Aug 08 PHP
PHP之COOKIE支持详解
Sep 20 PHP
PHP学习之数组值的操作
Apr 17 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
基于php实现的php代码加密解密类完整实例
Oct 12 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 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 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
php两种无限分类方法实例
2015/04/21 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
php中array_slice和array_splice函数解析
2016/10/18 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
技术总监个人的自我评价范文
2013/12/18 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
党员创先争优承诺书
2014/03/26 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
培训研修方案
2014/06/06 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书