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 相关文章推荐
其他功能
Oct 09 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
PHP错误处理函数
Apr 03 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 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/02/27 无线电
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
PHP基本语法实例总结
2016/09/09 PHP
php四种定界符详解
2017/02/16 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
javascript每日必学之多态
2016/02/23 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
利用Python进行异常值分析实例代码
2017/12/07 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
pytorch实现查看当前学习率
2020/06/24 Python
Python中qutip用法示例详解
2020/10/02 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
德国购买健身器材:AsVIVA
2017/08/09 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
大学生会计职业生涯规划范文
2014/02/28 职场文书
中秋寄语大全
2014/04/11 职场文书
节水倡议书范文
2014/04/15 职场文书
实习推荐信
2014/05/10 职场文书
2015个人半年总结范文
2015/03/09 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书