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中ADODB类详解
Mar 25 PHP
php 页面执行时间计算代码
Dec 04 PHP
PHP 存储文本换行实现方法
Jan 05 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
Yii隐藏URL中index.php的方法
Jul 12 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 PHP
php swoft框架实例用法
Dec 22 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的计数器程序
2006/10/09 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
JavaScript错误处理
2015/02/03 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
jquery中radio checked问题
2015/03/16 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
Python实现的检测网站挂马程序
2014/11/30 Python
复习Python中的字符串知识点
2015/04/14 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
Python实现端口检测的方法
2018/07/24 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
保密工作承诺书
2014/08/29 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书