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类
Jul 15 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
php分页思路以及在ZF中的使用
May 30 PHP
php获取操作系统语言代码
Nov 04 PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php自定义时间转换函数示例
Dec 07 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 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/17 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
js tab效果的实现代码
2009/12/26 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
PyQT实现多窗口切换
2018/04/20 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
无工作经验者个人求职信范文
2013/12/22 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技