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+MSSQL分页的例子
Oct 09 PHP
PHP 字符串 小常识
Jun 05 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
php中str_pad()函数用法分析
Mar 28 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
PHP isset empty函数相关面试题及解析
Dec 11 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(7) php 字符串相关应用
2010/03/05 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
php二维码生成
2015/10/19 PHP
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
JavaScript File分段上传
2016/03/10 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Python 寻找局部最高点的实现
2019/12/05 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
高考考python编程是真的吗
2020/07/20 Python
工程地质勘察专业大学生求职信
2013/10/13 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
会议邀请函
2015/01/30 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏