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 cookie 登录验证示例代码
Mar 16 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
php中动态变量用法实例
Jun 10 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
CI框架整合smarty步骤详解
May 19 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 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获取网站域名和地址的代码
2008/08/17 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
nginx下安装php7+php5
2016/07/31 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
js转义字符介绍
2013/11/05 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
使用Python生成url短链接的方法
2015/05/04 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
python Canny边缘检测算法的实现
2020/04/24 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
建筑实习自我鉴定
2013/10/18 职场文书
办公室年终个人自我评价
2013/10/28 职场文书
厨师长岗位职责
2014/03/02 职场文书
空气的环保标语
2014/06/12 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
邀请函的格式
2015/01/30 职场文书
团代会邀请函
2015/02/02 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
导游词之镇江焦山
2019/11/21 职场文书