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 相关文章推荐
AJAX for PHP简单表数据查询实例
Jan 02 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
php下拉选项的批量操作的实现代码
Oct 14 PHP
php生成随机颜色的方法
Nov 13 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
php简单备份与还原MySql的方法
May 09 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 PHP
PHP环形链表实现方法示例
Sep 15 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 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往windows中添加用户
2006/12/06 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
js简易版购物车功能
2017/06/17 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python实现的rsa加密算法详解
2018/01/24 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
会议通知格式范文
2015/04/15 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python