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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
PHP5 面向对象程序设计
Feb 13 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
php猜单词游戏
Sep 29 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
May 30 PHP
php服务器的系统详解
Oct 12 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.ini 中文版
2006/10/28 PHP
数字转英文
2006/12/06 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python常见工厂函数用法示例
2018/03/21 Python
python读写LMDB文件的方法
2018/07/02 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
Python中if有多个条件处理方法
2020/02/26 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
python exit出错原因整理
2020/08/31 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
Django实现简单的分页功能
2021/02/22 Python
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
中学生寄语大全
2014/04/03 职场文书
2015大学生求职信范文
2015/03/20 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
新手必备Python开发环境搭建教程
2021/05/28 Python
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫