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 相关文章推荐
自己前几天写的无限分类类
Feb 14 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
php Session无效分析资料整理
Nov 29 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
php封装的page分页类完整实例代码
Feb 01 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代码简化
2010/02/08 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP实现的日历功能示例
2018/09/01 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
举例介绍Python中的25个隐藏特性
2015/03/30 Python
python基础教程之匿名函数lambda
2017/01/17 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
python中字典增加和删除使用方法
2020/09/30 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
个人查摆剖析材料
2014/02/04 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书