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代码
Aug 08 PHP
php模板函数 正则实现代码
Oct 15 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
php curl模拟post请求小实例
Nov 13 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
php对数组排序代码分享
Feb 24 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
PHP之预定义接口详解
Jul 29 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 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
PHP的简易冒泡法代码分享
2012/08/28 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
Python yield使用方法示例
2013/12/04 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
Python实现新浪博客备份的方法
2016/04/27 Python
python装饰器初探(推荐)
2016/07/21 Python
Python中元组,列表,字典的区别
2017/05/21 Python
Python实现的计数排序算法示例
2017/11/29 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
python执行精确的小数计算方法
2019/01/21 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python里dict变成list实例方法
2019/06/26 Python
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
我的五年职业生涯规划
2014/01/23 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
2014年党小组工作总结
2014/12/20 职场文书
辩护词范文大全
2015/05/21 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python