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采集速度探究总结(原创)
Apr 18 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
PHP GD 图像处理组件的常用函数总结
Apr 28 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
Aug 06 PHP
php抓取页面的几种方法详解
Jun 17 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP simplexml_load_file()函数讲解
Feb 03 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
第七节--类的静态成员
2006/11/16 PHP
php中spl_autoload详解
2014/10/17 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
js tab 选项卡
2009/04/26 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
js数组操作学习总结
2013/11/04 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python基础教程之Hello World!
2014/08/29 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
python实现计算器简易版
2020/12/17 Python
python 通过exifread读取照片信息
2020/12/24 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
家长给幼儿园的表扬信
2014/01/09 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
护士自我鉴定总结
2014/03/24 职场文书
承诺书格式范文
2014/06/03 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
土建施工员岗位职责
2014/07/16 职场文书
社区班子对照检查材料
2014/08/27 职场文书
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA