PHP中抽象类,接口功能、定义方法示例


Posted in PHP onFebruary 26, 2019

本文实例讲述了PHP中抽象类,接口功能、定义方法。分享给大家供大家参考,具体如下:

这里先介绍接口,因为在我最近看的好几本php工具书中都没有提到抽象类。

本人也觉得,在理解了接口后抽象类也非常好理解。

例子代码随便写了一下。例子代码是很ok的,测试过了不会报错,懒得看代码的筒靴们看文字一样。栗子举的不好。

代码测试环境:php5.3.29

接口(interface):

接口就是为抽象而生的,相当于一个约定或规范,方便框架搭建,代码分工。

它里面指定了抽象方法的名称和参数和成员常量,但不能包含任何的具体方法,变量.

个人认为php是弱类型语言,强调的是灵活性。与java相比php里的接口对类型要求太松弛。不大好用,不推荐大量使用。

  • 1)接口中全部是抽象方法。(因为要用来给子类实现。所以都要是publicprotected的。)
  • 2)接口中不能有具体方法,且只能有成员常量
  • 3) 由于php和java c++等强类型语言不同,php是弱类型且动态类型的本身就不指定返回类型,参数的数据类型除四种基本类型不能指定外也可写可不写,所以对方法返回值和参数的类型无要求
  • 4)一个类可以实现多个接口。用法: implements关键字后实现多个接口用逗号隔开
interface Car {
  const name = "车子";
  public function run($speed=400,$time=300);
}
class Xiali implements Car {
  public function run($s=100,$t=200){//参数个数必须相同
    echo '哈哈 我会跑';
    return 'abc';
  }
  public function fly() {
    echo '哈哈我会飞';
  }
}

抽象类(abstract class):

作用和接口一样,都是为了规范子类的功能,只是比接口多包含了具体的内容。

1)包含至少一个抽象方法(abstract function)的类(换言之,任何类只要有了一个或以上的抽象方法,这个类就必须是抽象类。)

2)抽象类和接口一样不能实例化。都叫抽象的了,还咋实例化,实例都是具体的。2333.

3)小结:抽象类和普通类俩区别:1.至少包含一个抽象方法 2.不能实例化。别的都一样。

4)用法:

abstract class Father{
  abstract function func1();//至少一个抽象方法。
  public function func2(){//具体方法随便写。
    echo 'func2';
    $this->func3();
  }
  private function func3(){
    echo '一个private方法';
  }
}

实现继承到的抽象方法时

/**
 * 继承抽象类
 * 必须实现其所有抽象方法
 * 和普通一样,一个类也只能继承一个抽象类
 */
class Son extends Father {
  public function func1() {
     echo '实现(重写)抽象方法。参数名个数必须相同'
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
缓存技术详谈―php
Dec 14 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP7引入的"??"和"?:"的区别讲解
Apr 08 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
PHP htmlentities()函数用法讲解
Feb 25 #PHP
PHP html_entity_decode()函数讲解
Feb 25 #PHP
PHP hex2bin()函数用法讲解
Feb 25 #PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 #PHP
PHP封装的分页类与简单用法示例
Feb 25 #PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 #PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 #PHP
You might like
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
利用php输出不同的心形图案
2016/04/22 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
js随机生成网页背景颜色的方法
2015/02/26 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Python实现新浪博客备份的方法
2016/04/27 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
关于python3中setup.py小概念解析
2019/08/22 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
python dict如何定义
2020/09/02 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
行政主管职责范本
2014/03/07 职场文书
家长通知书教师评语
2014/04/17 职场文书
小学生暑假家长评语
2014/04/17 职场文书
小学生倡议书范文
2014/05/13 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
学生会部长竞选稿
2015/11/19 职场文书
同学联谊会邀请函
2019/06/24 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP