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 相关文章推荐
ThinkPHP php 框架学习笔记
Oct 30 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
php 定义404页面的实现代码
Nov 19 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
yii分页组件用法实例分析
Dec 28 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
php fread函数使用方法总结
May 28 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
一个PHP+MSSQL分页的例子
2006/10/09 PHP
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php获取linux命令结果的实例
2017/03/13 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
puppeteer库入门初探
2019/01/09 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
彪马美国官网:PUMA美国
2017/03/09 全球购物
英国足球店:UK Soccer Shop
2017/11/19 全球购物
农民入党思想汇报
2014/01/03 职场文书
高中生活自我鉴定
2014/01/18 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
个人自荐材料
2014/05/23 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
检讨书范文1000字
2015/01/28 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书