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 相关文章推荐
一个用php3编写的简单计数器
Oct 09 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
深入理解PHP中的count函数
May 31 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 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获取网站域名和地址的代码
2008/08/17 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
js实现数字滚动特效
2019/12/16 Javascript
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
详解Python3 pickle模块用法
2019/09/16 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
信息专业本科生个人的自我评价
2013/10/28 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
医疗纠纷协议书
2014/04/16 职场文书
党性教育心得体会
2014/09/03 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
不同意离婚答辩状
2015/05/22 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
运动会广播稿50字
2015/08/19 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server