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 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
php数组生成html下拉列表的方法
Jul 20 PHP
php实现简单的MVC框架实例
Sep 23 PHP
php session实现多级目录存放实现代码
Feb 03 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 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 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
php写的AES加密解密类分享
2014/06/20 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
JQuery 入门实例1
2009/06/25 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
简单的三步vuex入门
2018/05/20 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
Python的一些用法分享
2012/10/07 Python
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python视频按帧截取图片工具
2019/07/23 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
Python Selenium截图功能实现代码
2020/04/26 Python
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
优秀小学生家长评语
2014/01/30 职场文书
寄语学生的话
2014/04/10 职场文书
优秀员工推荐信
2014/05/10 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
争先创优个人总结
2015/03/04 职场文书
Consul在linux环境的集群部署
2022/04/08 Servers