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 相关文章推荐
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
解决file_get_contents无法请求https连接的方法
Dec 17 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
php实现支持中文的文件下载功能示例
Aug 30 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数组的维度
2013/06/10 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
cakephp常见知识点汇总
2017/02/24 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
python ChainMap 合并字典的实现步骤
2019/06/11 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python实现人工蜂群算法
2020/09/18 Python
如何编写python的daemon程序
2021/01/07 Python
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
工程力学专业毕业生求职信
2013/10/06 职场文书
办公室前台岗位职责范本
2013/12/10 职场文书
大学秋游活动方案
2014/02/11 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
投资协议书范本
2014/04/21 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
大学生毕业求职信
2014/06/12 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
会计人员岗位职责
2015/02/03 职场文书
工作失职检讨书范文
2015/05/05 职场文书
检讨书模板大全
2015/05/07 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang