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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
php smarty模版引擎中的缓存应用
Dec 11 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
Apr 13 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
php使用异或实现的加密解密实例
Sep 04 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 PHP
PHP如何防止用户重复提交表单
Dec 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技巧与注意事项分析
2011/02/03 PHP
php Session存储到Redis的方法
2013/11/04 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python实时获取cmd的输出
2015/12/13 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
python的等深分箱实例
2019/11/22 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
护理学毕业生求职信
2013/11/14 职场文书
公司员工检讨书
2014/02/08 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
乱世佳人观后感
2015/06/08 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript