php中的抽象方法和抽象类


Posted in PHP onFebruary 14, 2017

1、什么是抽象方法?

我们在类里面定义的没有方法提的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。

例如:

abstract function fun1(); 
abstract function fun2();

2、什么是抽象类?

只要一个类里面有一个方法是抽象方法,那么这个类就定义为抽象类,抽象类也要使用“abstract”关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性,但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用“abstract”修饰。

例如:

abstract class demo{
var $test;
abstract function fun1();
abstract function fun2();
}

3、抽象类有什么作用?

上例子中定义了一个抽象类“demo”使用了“abstract”来修饰,在这个类里面定义了一个成员属性"$test",和两个抽象方法“fun1”和“fun2”还有一个非抽象的方法fun3();那么抽象类我们怎么使用呢?最重要的一点就是抽象类不能产生实例对象,所以也不能直接使 用,前面我们多次提到过类不能直接使用,我们使用的是通过类实例化出来的对象,那么抽 象类不能产生实例对象我们声明抽象类有什么用呢?我们是将抽象方法是做为子类重载的模 板使用的,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,子类继函抽象 类之后,把抽象类里面的抽象方法按照子类的需要实现。子类必须把父类中的抽象方法全部 都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化对;为什么我 们非要从抽象类中继承呢?因为有的时候我们要实现一些功能就必须从抽象类中继承,否则 这些功能你就实现不了,如果继承了抽象类,就要实现类其中的抽象方法;

例如:

abstract class mode{
 var $test;
 abstract function fun1();
 abstract function fun2();
 function fun2(){
  ....
 }
}
$mode = new mode(); //抽象类只能为产生实例对象,所以这样做是错的,实例化对象交给子类
class test extends mode{
  function fun1(){
  ....
  }
  
  function fun2(){
  ....
  }
}
$test = new test(); //子类可以实例化对象,因为实现了所有父类的抽象化方法

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
PHP生成网页快照 不用COM不用扩展.
Feb 11 PHP
php函数之子字符串替换 str_replace
Mar 23 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
Feb 19 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
PHP基于array_unique实现二维数组去重
Jul 14 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 #PHP
PHP静态成员变量
Feb 14 #PHP
php中序列化与反序列化详解
Feb 13 #PHP
PHP最常用的正则表达式
Feb 13 #PHP
PHP面相对象中的重载与重写
Feb 13 #PHP
PHP中overload与override的区别
Feb 13 #PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 #PHP
You might like
php随机显示图片的简单示例
2014/02/15 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
jQuery 自定义函数写法分享
2012/03/30 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
Position属性之relative用法
2015/12/14 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
python对数组进行反转的方法
2015/05/20 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python梯度下降法的简单示例
2018/08/31 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
Python字符串三种格式化输出
2020/09/17 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
在校生钳工实习自我鉴定
2013/09/19 职场文书
英语国培研修感言
2014/02/13 职场文书
医院院务公开实施方案
2014/05/03 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android