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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
用PHP实现多服务器共享SESSION数据的方法
Mar 16 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
PHP实时统计中文字数和区别
Feb 28 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
PHP设计模式(观察者模式)
Jul 07 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
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php session的锁和并发
2016/01/22 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
python画图的函数用法以及技巧
2019/06/28 Python
opencv python图像梯度实例详解
2020/02/04 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
瑜伽国际:Yoga International
2018/04/18 全球购物
linux比较文件内容的命令是什么
2015/09/23 面试题
毕业生教师求职信
2013/10/20 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
金融专业推荐信
2013/11/14 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
代理人委托书
2014/08/01 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
争先创优个人总结
2015/03/04 职场文书
旷工检讨书大全
2015/08/15 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
Python代码实现双链表
2022/05/25 Python