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完全过滤HTML,JS,CSS等标签
Jan 16 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
Array of country list in PHP with Zend Framework
Oct 17 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
Mar 21 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
May 02 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
2006/10/09 PHP
实用函数2
2007/11/08 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
旅游专业职业生涯规划范文
2014/01/13 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
辅导员评语
2014/05/04 职场文书
物业保安岗位职责
2014/07/02 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技