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 相关文章推荐
初探PHP5
Oct 09 PHP
用PHP查询搜索引擎排名位置的代码
Jan 05 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
解析php开发中的中文编码问题
Aug 08 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
php导出中文内容excel文件类实例
Jul 06 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
php-beanstalkd消息队列类实例分享
Jul 19 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
详解angular element()方法使用
2017/04/08 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
python集合能干吗
2020/07/19 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
技术人员面试提纲
2013/11/28 职场文书
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
公司授权委托书范本
2014/04/03 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
教导主任个人总结
2015/03/03 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书