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网上商城购物车设计代码分享
Feb 15 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
php获取文件后缀的9种方法
Mar 22 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
php实现等比例压缩图片
Jul 26 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP中文乱码解决方案
2015/03/05 PHP
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
win10安装python3.6的常见问题
2020/07/01 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
远程调用的原理
2014/07/05 面试题
销售行业个人求职自荐信
2013/09/25 职场文书
护士自我评价
2014/02/01 职场文书
购房协议书
2014/04/11 职场文书
如何写辞职书
2015/02/26 职场文书
停水通知
2015/04/16 职场文书
医院员工辞职信范文
2015/05/12 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python