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 array_merge下进行数组合并的代码
Jul 22 PHP
js和php邮箱地址验证的实现方法
Jan 09 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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
推荐25款php中非常有用的类库
2014/09/29 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
JS 控件事件小结
2012/10/31 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
js实现自定义路由
2017/02/04 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
python日期相关操作实例小结
2019/06/24 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
美国校园市场:OCM
2017/06/08 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
银行职业规划书范文
2013/12/28 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
喝酒检查书范文
2014/02/23 职场文书
英语专业自荐书
2014/06/13 职场文书
秦兵马俑导游词
2015/02/02 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
教导处教学工作总结
2015/08/12 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技