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中进行身份认证
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
smarty实现多级分类的方法
Dec 05 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
PHP实现的进度条效果详解
May 03 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
我用php+mysql写的留言本
2006/10/09 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
jquery为页面增加快捷键示例
2014/01/31 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python os模块学习笔记
2015/06/21 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
Python按钮的响应事件详解
2019/03/04 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
《最后的姿势》教学反思
2014/02/27 职场文书
小学一年级评语大全
2014/04/22 职场文书
师德模范事迹材料
2014/06/03 职场文书
2014和解协议书范文
2014/09/15 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
开场白怎么写
2015/06/01 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书