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 cookis创建实现代码
Mar 16 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
php全角字符转换为半角函数
Feb 07 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
Smarty分页实现方法完整实例
May 11 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHP7修改的函数
Mar 09 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的输入输出流
2007/02/14 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
简单了解Django模板的使用
2017/12/20 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
晚会邀请函范文
2014/01/24 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
会计工作检讨书
2015/02/19 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis